gpt4 book ai didi

java - TestNG.xml - 第一个浏览器 session 关闭后,新的浏览器 session 不会打开

转载 作者:行者123 更新时间:2023-11-30 05:52:13 26 4
gpt4 key购买 nike

我的框架如何工作:

  • 方法依赖于之前的方法,例如步骤 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com