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

我正在尝试通过从 Excel 文件中读取测试数据来添加新联系人。第一行数据创建成功。在第二行之后,我收到错误消息“org.openqa.selenium.NoSuchSessionException:会话 ID 为空。在调用 quit() 后使用 WebDriver?”


我重新检查了我的代码,发现其他测试用例工作正常。我按照以下流程转到 Base url->Login->Add contacts->driver.quit()


@AfterMethod

    public void teardown() {


        driver.quit();

    }

我期望应该读取数据并添加多个联系人


月关宝盒
浏览 201回答 4
4回答

皈依舞

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

元芳怎么了

您在@AfterMethod这里使用并@AfterMethod在每次执行该方法后执行,在您的情况下,在从 excel 进行一次迭代后,它会被执行,并且驱动程序实例会因为您在driver.quit()这里使用而结束。因此,要解决这个问题,您应该使用@AfterTest而不是@AfterMethodas@AfterTest将仅在 excel 中的所有行都被执行并且您的测试用例执行完成时才运行。

偶然的你

您正在从 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注解的生命周期,什么时候调用哪个注解。这是最简单的例子:最佳实践是在 @AfterSuite 注释中定义 driver.quite()。

胡子哥哥

利用 :@BeforeMethodpublic void initialize() {if(driver == null){      //initialize your driver(webdriver or RemoteWebdriver)      driver = new ChromeDriver();    }}@AfterMethodpublic void teardown() {   if(driver != null){    driver.quit();   }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java