使用TestNG,两个URL';s是打开的,而不是一个

使用TestNG,两个URL';s是打开的,而不是一个,testng,Testng,使用TestNG有两种方法,第一种方法的凭据无效,但第二种方法有效。问题是首先打开URL并添加了无效凭据,然后再次打开URL并添加了有效的详细信息。为什么URL会打开两次 @测试(优先级=0) 公众假期一({ driver.findelelement(By.xpath(“./*[@id='user\u login'])).sendKeys(“在有效电子邮件中”); findElement(By.xpath(“./*[@id='user\u login\u password'])).sendKey

使用TestNG有两种方法,第一种方法的凭据无效,但第二种方法有效。问题是首先打开URL并添加了无效凭据,然后再次打开URL并添加了有效的详细信息。为什么URL会打开两次

@测试(优先级=0)
公众假期一({
driver.findelelement(By.xpath(“./*[@id='user\u login'])).sendKeys(“在有效电子邮件中”);
findElement(By.xpath(“./*[@id='user\u login\u password'])).sendKeys(“无效密码”);
}
@测试(优先级=1)
公众假期二({
findelelement(By.xpath(“./*[@id='user\u login'])).sendKeys(“有效”);
findelelement(By.xpath(“./*[@id='user\u login\u password'])).sendKeys(“有效”);
}
@预处理法
方法()之前的公共无效{
//创建Firefox驱动程序的新实例
驱动程序=新的FirefoxDriver();
//放置隐式等待,这意味着在页面上搜索元素可能需要设置隐式等待的时间,然后才会引发异常
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
//启动在线商店网站
获取驱动程序(“URL”);
}
@后置法
公共方法(){
//关闭驱动器
driver.quit();
}

您正在运行的两个方法都在初始化@before方法。这将打开URl两次。改为运行@Before测试方法

@Before方法将在类中定义的每个@test方法之前调用,因此您可以在代码中看到有两个@test注释,分别名为“void one()”和“void two()”,因此您的URL将打开并传递void one()方法的键,浏览器将根据@AfterMethod注释关闭

正如@beforethod在每个@Test执行之前调用一样,同样地@AfterMethod将在每个@Test执行之后调用。


为了一次性执行它,您必须使用@BeforeClass注释,这样它将调用single time,您将获得所需的结果。类似于在执行结束后关闭浏览器,您可以使用@AfterClass注释来定义它。

它会打开两次,因为您在每个方法之前初始化webdriver对象,而不是在测试类之前。对你有意义吗?