《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

简介: 【6月更文挑战第14天】本文介绍了如何使用TestNg进行自动化测试,特别是通过变量参数启动不同浏览器的步骤。

1.简介

上一篇文章中,从TestNg的特点我们知道支持变量,那么我们这一篇就通过变量参数来启动不同的浏览器进行自动化测试。那么如何实现同时启动不同的浏览器对脚本进行测试,且听宏哥娓娓道来。

2.项目实战

2.1创建一个TestNg class

1.首先按照上一篇的方法创建一个TestNg class,命名为:TestDiffBrowse(不需要勾选Beforeclass和Afterclass),如下图所示:

2.或者这样右键TestNG->Create TestNG Class,创建一个TestNg class,命名为:TestDiffBrowse(不需要勾选Beforeclass和Afterclass),如下图所示:

2.2代码设计

@Parmeters("Browser"),直接把外部参数Browser通过@Parmaeters注释引入到测试脚本中供方法共享这个变量.

2.3参考代码

package lessons;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.Parameters;

import org.testng.annotations.Test;


/**

* @author 北京-宏哥

*

* @公众号:北京宏哥

*

* 《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 -下篇(详细教程)

*

* 2022年2月25日

*/

public class TestDiffBrowse {

   @Test

   // 这行@Test一定要写,如果不写,表示当前没有需要执行的脚本,你可以测试不写,然后run testng.xml试试看,会发生什么

   @Parameters("Browser")

   public void startBrowser(String browser) {


       if (browser.equalsIgnoreCase("Firefox")) {


           System.setProperty("webdriver.gecko.driver",".\\Tools\\geckodriver.exe");

           WebDriver driver = new FirefoxDriver();

           driver.manage().window().maximize();

           driver.get("https://www.baidu.com");

           driver.quit();

       } else if (browser.equalsIgnoreCase("Chrome")) {


           System.setProperty("webdriver.chrome.driver",".\\Tools\\chromedriver.exe");

           WebDriver driver = new ChromeDriver();

           driver.manage().window().maximize();

           driver.get("https://www.baidu.com");

           driver.quit();

       }


   }

}

2.4创建testng.xml

1.创建一个testng.xml文件,设置参数Browser。右键上面我们创建的TestCrossBrowser.java,选择TestNG-Convert to TestNG,根据提示,走完这个向导。完成后,会在当前项目的根目录生成一个testng.xml的文件。如下图所示:

2.将生成的testng.xml文件进行调整和修改,内容如下:

3.参考代码:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<!-- Suite相关设置,这里paraller是执行的模式,有tests classes methods三种取值,thread-count表示两个线程执行用例 -->

<suite name="Suite" parallel="tests" thread-count="2">

 <test name="Test">

     <parameter name="Browser" value="Firefox" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> <!-- Test -->

 <test name="Test1">

     <parameter name="Browser" value="Chrome" />

     <classes>

             <class name="lessons.TestDiffBrowser"/>

     </classes>

 </test> <!-- Test -->

</suite> <!-- Suite -->

这里需要注意每个test标签下的name不能重名,下面解释下parallel这个属性,上面提到有三种值。

(1)tests

TestNG 会在相同的线程中运行相同<test>标记下的所有方法,但是每个<test>下的方法会运行在不同的线程下。

应用:可以将非线程安全的类放在同一个<test>标签下,并且使其可以利用TestNG多线程的特性的同时,让这些类运行在相同的线程中。(不太理解)

(2)methods

TestNG 会在不同的线程中运行测试方法,除非那些互相依赖的方法。那些相互依赖的方法会运行在同一个线程中,并且遵照其执行顺序。

(3)classes

TestNG 会在相同线程中相同类中的运行所有的方法,但是每个类都会用不同的线程运行

属性 thread-count 允许你为当前的执行指定可以运行的线程数量。

2.5运行代码

1.运行代码,右键Run AS->TestNG Suite,控制台输出,观察运行结果,在控制台输出地方可以看到运行了2个test。如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

3.小结

好了,时间也不早了,今天就分享和讲解到这里,希望对您有所帮助,感谢您耐心地阅读!



每天学习一点,今后必成大神-


往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
2月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
302 3
|
2月前
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
312 0
|
25天前
|
安全 Java
Java之泛型使用教程
Java之泛型使用教程
156 10
|
15天前
|
Oracle Java 关系型数据库
Java 简单教程
Java是跨平台、面向对象的编程语言,广泛用于企业开发、Android应用等。本教程涵盖环境搭建、基础语法、流程控制、面向对象、集合与异常处理,助你快速入门并编写简单程序,为进一步深入学习打下坚实基础。
197 0
|
7月前
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
3月前
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
165 0
|
3月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
3月前
|
缓存 安全 Java
Java 并发新特性实战教程之核心特性详解与项目实战
本教程深入解析Java 8至Java 19并发编程新特性,涵盖CompletableFuture异步编程、StampedLock读写锁、Flow API响应式流、VarHandle内存访问及结构化并发等核心技术。结合电商订单处理、缓存系统、实时数据流、高性能计数器与用户资料聚合等实战案例,帮助开发者高效构建高并发、低延迟、易维护的Java应用。适合中高级Java开发者提升并发编程能力。
91 0
|
4月前
|
Oracle Java 关系型数据库
java 编程基础入门级超级完整版教程详解
这份文档是针对Java编程入门学习者的超级完整版教程,涵盖了从环境搭建到实际项目应用的全方位内容。首先介绍了Java的基本概念与开发环境配置方法,随后深入讲解了基础语法、控制流程、面向对象编程的核心思想,并配以具体代码示例。接着探讨了常用类库与API的应用,如字符串操作、集合框架及文件处理等。最后通过一个学生成绩管理系统的实例,帮助读者将理论知识应用于实践。此外,还提供了进阶学习建议,引导学员逐步掌握更复杂的Java技术。适合初学者系统性学习Java编程。资源地址:[点击访问](https://pan.quark.cn/s/14fcf913bae6)。
377 2
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
504 5