我的框架如何工作:
- 方法依赖于之前的方法,例如步骤 2 取决于步骤 1,步骤 3 取决于步骤 2,依此类推 - 其作用是,如果一种方法失败,则跳过所有其他方法。
- 我添加了一个带有注释@AfterMethod的拆卸方法,希望在测试失败后,驱动程序将关闭,另一个驱动程序将为testcase2打开(我知道这是不好的方式)
- 从 testng.xml 运行它会给出以下流程:执行第一个测试用例(假设它在中间某个地方失败)。驱动程序将退出,但驱动程序不会启动第二个测试用例。
teardown 和 @AfterMethod 的问题是,即使驱动程序已经关闭,程序也会尝试在每个方法上调用 driver.quit。
Session ID is null. Using WebDriver after calling quit()?
有办法做到以下几点吗? - 如果测试步骤失败,则跳过测试用例(java 类)中的所有其他步骤,然后退出浏览器并再次打开浏览器进行第二个测试用例。 我知道 @AfterMethod 是一个不好的方法来解决这个问题。我在某处读到,在这种情况下,使用 WebDriver 的静态属性是一个糟糕的方法。如果是这样,我应该如何重构我的代码才能实现上述流程? (粗体)。
难道是听者的原因?在家里,我无法访问发送结果的工具,因此效果非常好。在可以本地访问该工具的情况下,监听器可以工作,但会失败。
我的猜测是这个问题是由于监听器而发生的。
谢谢!
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="AutomationFramework">
<test name="RegistrationPart1">
<classes>
<class name="registration.testcase1" />
</classes>
</test>
<test name="RegistrationPart2">
<classes>
<class name="registration.testcase2" />
</classes>
</test>
</suite>
测试用例1
public class testcase1 {
TNGDriver tngDriver = new TNGDriver();
@BeforeClass
public void initBrowser() {
tngDriver.initBrowser("chrome");
}
@Test(priority = 1)
public void step1() throws InterruptedException {
//do something
}
@Test(priority = 2, dependsOnMethods = {"step1"})
public void step2() {
//do something
}
测试用例2
public class testcase2 {
TNGDriver tngDriver = new TNGDriver();
@BeforeClass
public void initBrowser() {
tngDriver.initBrowser("chrome");
}
@Test(priority = 1)
public void step1() throws InterruptedException {
//do something
}
@Test(priority = 2, dependsOnMethods = {"step1"})
public void step2() {
//do something
}
拆卸方法
@AfterMethod
public void tearDown(ITestResult result) throws IOException, InterruptedException {
if(result.getStatus() == ITestResult.FAILURE) {
takeScreenshot(result);
quitAndKillTask();
}
}
最佳答案
如果您调用 driver.close(),这将关闭当前窗口。如果没有打开的 window ,司机就会退出。因此,当调用您的tearDown、driver.quit()时, session 已经结束并且您会收到错误。
在拆卸过程中,只需检查有效 session ,然后调用 driver.quit()(如果存在)
关于java - TestNG.xml - 第一个浏览器 session 关闭后,新的浏览器 session 不会打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53708136/