为了账号安全,请及时绑定邮箱和手机立即绑定

会话 ID 为空。调用 quit() 后使用 WebDriver?

会话 ID 为空。调用 quit() 后使用 WebDriver?

月关宝盒 2022-06-15 09:45:27
我正在尝试通过从 Excel 文件中读取测试数据来添加新联系人。第一行数据创建成功。在第二行之后,我收到错误消息“org.openqa.selenium.NoSuchSessionException:会话 ID 为空。在调用 quit() 后使用 WebDriver?”我重新检查了我的代码,发现其他测试用例工作正常。我按照以下流程转到 Base url->Login->Add contacts->driver.quit()@AfterMethod    public void teardown() {        driver.quit();    }我期望应该读取数据并添加多个联系人
查看完整描述

4 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

当您使用已调用 quit() 或 close() 方法的驱动程序实例进行任何进一步操作时,会出现此错误。只需确保在再次使用之前重新初始化驱动程序实例。正如您在 @AfterMethod 中调用 driver.quit() 一样,将 @BeforeMethod 中的驱动程序实例初始化为:


@BeforeMethod

    public void testMethodInitialize() {

        driver = new ChromeDriver();

    }


查看完整回答
反对 回复 2022-06-15
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

您在@AfterMethod这里使用并@AfterMethod在每次执行该方法后执行,在您的情况下,在从 excel 进行一次迭代后,它会被执行,并且驱动程序实例会因为您在driver.quit()这里使用而结束。

因此,要解决这个问题,您应该使用@AfterTest而不是@AfterMethodas@AfterTest将仅在 excel 中的所有行都被执行并且您的测试用例执行完成时才运行。


查看完整回答
反对 回复 2022-06-15
?
偶然的你

TA贡献1841条经验 获得超3个赞

您正在从 Excel 中读取数据,并且您的第一次遍历成功。


您的第二次遍历将失败,因为您在 @AfterMethod 注释中已过期驱动程序调用。@AfterMethod 注释将在每个 @Test 注释之后执行。在您的情况下,由于驱动程序在 AfterMethod 中过期,并且如果它继续进行 @Test 所以它失败了。


在您的情况下,遍历如下:


如果 3 excel 行:


@BeforeMethod(if applicable)

1st Row

@AfterMEthod


@BeforeMethod(if applicable)

2nd Row

@AfterMEthod


@BeforeMethod(if applicable)

3rd Row

@AfterMEthod

你需要了解TestNG注解的生命周期,什么时候调用哪个注解。


这是最简单的例子:

//img1.sycdn.imooc.com//62a939de0001bd8d03420309.jpg

最佳实践是在 @AfterSuite 注释中定义 driver.quite()。



查看完整回答
反对 回复 2022-06-15
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

利用 :


@BeforeMethod


public void initialize() {



if(driver == null){

      //initialize your driver(webdriver or RemoteWebdriver)

      driver = new ChromeDriver();

    }

}


@AfterMethod


public void teardown() {

   if(driver != null){

    driver.quit();

   }


}


查看完整回答
反对 回复 2022-06-15
  • 4 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信