如果是:多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象,
只需要:
1. 创建一个基本的测试类(BaseTest),具有一个公共静态的driver属性, public static WebDriver driver
2. 给BaseTest类一个@Test(groups={"functionTests","checkinTests"})方法,
3. BaseTest类中创建@beforeTest,@afterTest注解的方法, 不要创建@Test注解的方法,
4. 其实,如果是PageObject设计模式,每个页面的对象创建也可以放在基础类BaseTest中,
5. 其他的测试类继承这个基本的测试类BaseTest, 此时,所有的测试类就具有了一个共同的唯一的" driver ", 页面对象句柄。
6. 给其他类中的方法也加上@Test(groups={"functionTests","checkinTests"})的注解,注解根据需要来设置。
7. 当前也可以在其他类的类上声明@Test(groups={"functionTests","checkinTests"})注解。
8. 如果某个测试类中有多个@Test注解的方法,则需要指定所有类中方法的执行顺序,而不是单个类中的,priority=0,开始
9. 经过实验,发现每个测试类执行都是从默认的priority=0开始,
如果只指定一个类中的测试方法的顺序,此时一起执行全部测试类时,不会按照类的顺序进行执行,而是会按照默认的priority来执行
由于每个测试中的测试方法默认的priority=0,所以testng会先将priority=0的方法执行完毕后,才会执行priority=1,2,3...

基础测试类

@Test(groups={"functionTests","checkinTests"})
public class BaseTest {
public static WebDriver driver; @BeforeTest
public void before(){
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.sogou.com/");
} @AfterTest
public void after() throws Exception{
Thread.sleep(2000);
driver.close();
driver.quit();
}
}

测试类

@Test(groups={"functionTests","checkinTests"})
public class TEST2 extends BaseTest{ @Test(priority=0)
public void TWO1(){
System.out.println("TWO1");
driver.findElement(By.className("sec-input")).sendKeys("testTWO--1--"); }
@Test(priority=1)
public void TWO2(){
System.out.println("TWO2");
driver.findElement(By.className("sec-input")).sendKeys("testTWO--2--"); }
@Test(priority=2)
public void TWO3(){
System.out.println("TWO3");
driver.findElement(By.className("sec-input")).sendKeys("testTWO--3--"); }
}

测试类

public class TEST3 extends BaseTest{

    @Test(groups={"functionTests","checkinTests"},priority=3)
public void THREE(){
System.out.println("33333333333333333");
driver.findElement(By.className("sec-input")).sendKeys("testTHREE----"); }
}

测试类

public class TEST4 extends BaseTest{

    @Test(groups={"functionTests","checkinTests"},priority=4)
public void FOUR(){
System.out.println("444444444");
driver.findElement(By.className("sec-input")).sendKeys("testFOUR----"); }
}

testng.xml文件配置如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="1"> <test verbose="10" preserve-order="true" name="TestDebug">
<groups>
<run>
<exclude name="brokenTests" />
<include name="functionTests" />
</run>
</groups> <classes>
<class name = "com.test.ztest.Test.TEST2"/>
<class name = "com.test.ztest.Test.TEST3"/>
<class name = "com.test.ztest.Test.TEST4"/> </classes> </test> <!-- Test -->
</suite> <!-- Suite -->

分享完成,如有更好的方法,请不令赐教。

多个测试类 只使用同一个浏览器,同一个driver对象, 或者同一个页面的对象的更多相关文章

  1. Frameset框架,在同一个浏览器窗口中显示不止一个页面

    总结一下.通过使用Frameset框架,可以在同一个浏览器窗口中显示不止一个页面. 先举个例子: 1 <frameset rows="100,*" cols="*& ...

  2. python selenium 多个页面对象类使用同一个webdriver(即只打开一个浏览器窗口)

    1 class BasePage(): 2 """selenium基类""" 3 4 def __init__(self, driver=N ...

  3. unittest中更高效的执行测试用例一个类只需要打开一次浏览器

    示例代码 baidu.py # _*_ coding:utf-8 _*_ import csv,unittest #导入csv模块 from time import sleep from seleni ...

  4. Appscan_web安全测试工具 (含修改启动浏览器的方法)

    安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的“民工兄弟” ...

  5. 测试类异常Manual close is not allowed over a Spring managed SqlSession

    在用Spring 和mybatis整合的 写测试类的时候报出解决办法:在全局配置文件   class="org.mybatis.spring.SqlSessionTemplate" ...

  6. python+pytest接口自动化(11)-测试函数、测试类/测试方法的封装

    前言 在python+pytest 接口自动化系列中,我们之前的文章基本都没有将代码进行封装,但实际编写自动化测试脚本中,我们都需要将测试代码进行封装,才能被测试框架识别执行. 例如单个接口的请求代码 ...

  7. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  8. JUit——(三)JUnit核心对象(测试、测试类、Suit和Runner)

    JUnit的核心对象:测试.测试类.测试集(Suite).测试运行器 1. 测试: @Test注释的.公共的.不带有任何参数.并且返回void类型的方法 2. 测试类: 公共的,包含对应类的测试方法的 ...

  9. Randoop测试类和方法(用例自动生成)

    详细使用方法见randoop官网: https://randoop.github.io/randoop/manual/index.html 测试程序之前,先检测下你的Randoop是否配置好: 打开c ...

随机推荐

  1. 增强学习 | Q-Learning

    "价值不是由一次成功决定的,而是在长期的进取中体现" 上文介绍了描述能力更强的多臂赌博机模型,即通过多台机器的方式对环境变量建模,选择动作策略时考虑时序累积奖赏的影响.虽然多臂赌博 ...

  2. input的文件上传图片

    <img id="headIMG" src="img/header_default.jpg"/> <input type="file ...

  3. spring框架-spring.xml配置文件

    运行的时候会报错的,因为写到<bean>标签里面去了,肯定会报错的,要记得把注释删掉,就不会报错了,这样写注释是为了方便下次自己看. <?xml version="1.0& ...

  4. visual studio高效率插件及快捷键

    visual studio从2010开始支持插件安装(工具->扩展管理器),这里推荐几个插件,可以极大的提升开发效率: Visual Assist X(VAssistX) VAssistX是wh ...

  5. 二叉树 java实现

    class Node { private int data; // 其他数据 private int otherData; private Node left; private Node right; ...

  6. Git操作大全[实际用到的都放在这里总结]

    1.如何合并远程两个分支feature-rebuild和develop? g fetch g checkout -b develop origin/develop g merge feature-re ...

  7. Java发送新浪微博的问题

    一,背景 2017-06-26微博公告替换了一些接口,导致以前的: statuses/repost 转发一条微博 statuses/update 发布一条微博 statuses/upload 上传图片 ...

  8. 怎么去掉javascript 的Array的重复项

    //完美去除法: var arr=[1,3,2,2,11,4]; var arr1=[]; var arr2=arr.sort(function(a,b){ return a-b; }); //把数组 ...

  9. SetConsoleTextAttribute 函数--设置控制台文本属性

    SetConsoleTextAttribute函数 来源:https://msdn.microsoft.com/en-us/library/windows/desktop/ms686047(v=vs. ...

  10. lnk后缀名打开方式

    老娘栽了两次!! 前段时间,设计把设计图发给我,竟然是个后缀"exe"的文件,选择打开方式的时候忘记取消下图勾选: 结果懵逼了... 在网上找了个方法: 1.打开电脑"运 ...