Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)

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

作者头像
北京-宏哥
发布于 2022-04-27 09:46:53
发布于 2022-04-27 09:46:53
46300
代码可运行
举报
运行总次数:0
代码可运行

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参考代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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.参考代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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.运行代码后电脑端的浏览器的动作,如下小视频所示:

https://gorilla.cdnja.co/v/q5/q5103.mp4?token=uRSaJojAlEHxWhnIYp9Eow&expires=1651053349

3.小结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
测试报告-ExtentReports报告
ExtentReports报告官方网址:http://extentreports.com/
wangmcn
2022/07/25
1K0
测试报告-ExtentReports报告
《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中。
北京-宏哥
2022/04/27
4930
《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
详解TestNG的注释(三)
在前面的文章中详细的演示了TestNG测试框架的安装以及基本的应用,和testng.xml配置文件的应用,在本次文章中系统详细的概述TestNG框架中的注释,在Python里面这样的注释可以理解为装饰器。这些知识点主要涉及具体为:测试前和测试后,参数化,注释测试,禁用测试,异常测试,时间测试,以及把测试数据传递到测试方法中。下面结合具体的实际案例和具体的案例实战,从各个不同维度来演示各个知识点的应用。在Java5中引入了注释的功能,比如一个类集成了Thread类,在编写run方法的时候就会引入@Override,当然还有其他的案例。在TestNG的框架中,更多体现在测试执行前和测试执行后,我们在讲解单元测试框架的时候说过,一个完整的测试框架,它首先就得具备测试执行前的初始化以及测试执行后的环境清理。在TestNG框架中,这些点主要会包含在针对类,以及针对测试方法。我们先来看Before和After的应用,也就是说测试套件,测试类,测试用例,测试方法,具体案例源码如下:
无涯WuYa
2021/02/05
1.6K0
《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
今天这一篇,宏哥主要讲解:利用WebDriver 提供可以读取、添加和删除cookie 信息的相关操作方法。验证浏览器中是否存在某个cookie。原因是:因为基于真实的cookie 的测试是无法通过白盒和集成测试完成的。
北京-宏哥
2022/03/09
8790
《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法)。废话不说,直接上干货。
北京-宏哥
2022/04/27
3650
《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
从这一篇开始介绍和分享Java+Selenium+POM的简单自动化测试框架设计。第一个设计点,就是支持跨浏览器测试。
北京-宏哥
2022/05/10
7900
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
java + selenium + testng实现简单的UI自动化
 可以在https://mvnrepository.com里面搜索需要的库,选择版本,复制其依赖信息
未来sky
2018/08/30
8.1K0
java + selenium + testng实现简单的UI自动化
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
上一篇介绍了POM的基础理论知识和非POM方式写脚本,这篇介绍利用页面工厂类(page factory)去实现POM,通过查看PageFactory类,我们可以知道它是一个初始化一个页面实例的功能,在实例化该页面对象时候,也会一起实例化该页面的元素定位。
北京-宏哥
2022/04/27
7440
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
前面文章细心的小伙伴会发现宏哥在运行测试用例的时候有的是在main方法下,而有的不需要用main方法去执行用例,那么为什么有的就不需要在main方法下就能够成功运行测试用例了。这就需要单元测试框架的支持,这篇宏哥就来简单介绍TestNG单元测试框架的安装和基本使用。
北京-宏哥
2022/03/10
1.9K0
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
  在Web自动化的操作中,我们通常需要使用一些方法来操作浏览器,今天就来学习一下。这一篇宏哥主要是介绍一下,在自动化测试的时候,我们常见的一些浏览器操作有哪些,宏哥将会一一介绍和讲解。
北京-宏哥
2021/09/26
9410
《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
Selenium+Java自动化之如何优雅绕过验证码
验证码,本来就是为了防止别人恶意登录的,如果被你就这么轻易破解了,那么只能说你们公司验证码安全级别不高。
软件测试君
2021/10/26
2.5K0
Selenium+Java自动化之如何优雅绕过验证码
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
上一篇宏哥用PageFactory实现了POM,宏哥再介绍一下如果不用PageFactory如何实现POM。
北京-宏哥
2022/04/27
5790
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
北京-宏哥
2021/07/08
1.5K0
《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
  经过宏哥长时间的查找,终于找到了一个含有iframe的网页。所以今天这一篇的主要内容就是用这个网页的iframe,宏哥给小伙伴或者童鞋们演示一下,在处理过程中遇到的问题以及宏哥是如何解决的。
北京-宏哥
2021/11/17
1.2K0
《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
  在做web自动化时,有些情况selenium的api无法完成,需要通过第三方手段比如js来完成实现,比如去改变某些元素对象的属性或者进行一些特殊的操作,本文将来讲解怎样来调用JavaScript完成特殊操作。
北京-宏哥
2021/11/10
1.2K0
《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)
按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName。看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了解一些前端的基本知识。有了前端知识,做元素定位会很轻松,同样写网络爬虫也很有帮助,话题扯远了,回到Selenium自动化测试。tagName是DOM结构的一部分,其中页面上的每个元素都是通过输入标签,按钮标签或锚定标签等标签定义的。每个标签都具有多个属性,例如ID,名称,值类等。就其他定位符而言在Selenium中,我们使用了标签的这些属性值来定位元素。 对于Selenium中的tagName定位器,我们将仅使用标签名称来标识元素。
北京-宏哥
2021/08/05
2.1K0
《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
经过前边几篇文章和宏哥一起的学习,想必你已经知道了如何去查看Selenium相关接口或者方法。一般来说我们绝大多数看到的是已经封装好的接口,在查看接口源码的时候,你可以看到这个接口上边的注释,它会告诉你这个接口或者方法的作用,有哪些参数以及参数的类型是什么。为了更加生动的描述和理解,宏哥举例通过查找源码的方式去理解selenium启动Chrome的过程。这一篇文章主要是给没有java基础的童鞋或者小伙伴们准备的,为了接下来的学习还是要看一下java基础知识。
北京-宏哥
2021/07/13
1.2K0
《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
按计划今天宏哥继续讲解倚天剑-css的定位元素的方法:ID属性值定位、其他属性值定位和使用属性值的一部分定位(这个类似xpath的模糊定位)。
北京-宏哥
2021/08/20
1.6K0
《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试。这就需要我们暂时不让一些test case执行。今天宏哥主要讲解的就是在工作中遇到这种情况如何处理,不影响你的测试进度。
北京-宏哥
2022/04/27
5010
《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件。因此宏哥就接着讲解和分享一下:自动化测试下载文件。可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就是访问到下载页面,然后定位到要下载的文件的下载按钮后,点击按钮就可以了。其实不是这样的,且听宏哥徐徐道来:宏哥这里的下载是去掉下载弹框的下载。
北京-宏哥
2022/02/11
4980
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
推荐阅读
测试报告-ExtentReports报告
1K0
《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
4930
详解TestNG的注释(三)
1.6K0
《手把手教你》系列技巧篇(六十五)-java+ selenium自动化测试 - cookie -下篇(详细教程)
8790
《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
3650
《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
7900
java + selenium + testng实现简单的UI自动化
8.1K0
《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
7440
《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)
1.9K0
《手把手教你》系列技巧篇(二十六)-java+ selenium自动化测试-浏览器操作(详细教程)
9410
Selenium+Java自动化之如何优雅绕过验证码
2.5K0
《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
5790
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
1.5K0
《手把手教你》系列技巧篇(四十二)-java+ selenium自动化测试 - 处理iframe -下篇(详解教程)
1.2K0
《手把手教你》系列技巧篇(三十九)-java+ selenium自动化测试-JavaScript的调用执行-上篇(详解教程)
1.2K0
《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)
2.1K0
《手把手教你》系列技巧篇(七)-java+ selenium自动化测试-宏哥带你全方位吊打Chrome启动过程(详细教程)
1.2K0
《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
1.6K0
《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
5010
《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
4980
相关推荐
测试报告-ExtentReports报告
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验