【问题标题】:The FirefoxDriver cannot be used after quit() was called调用 quit() 后无法使用 FirefoxDriver
【发布时间】:2017-01-13 10:09:38
【问题描述】:

当我使用TestNG 在我的maven 项目中运行多个测试用例时,我收到了这个错误。尝试了多种解决方案,但没有一个对我有用。
调用quit() 后,不能使用FirefoxDriver

我的步骤如下:-

@Test1 因此,当我运行我的测试用例时,第一个案例将完美运行,这涉及到
打开浏览器
输入错误的登录详情
关闭浏览器。

@Test2 我的第二个案例是
打开浏览器
登录应用程序
验证网址
关闭浏览器。

但在这种情况下,它不会调用我的浏览器并给我以下错误

通过:loginfail 失败:loginpass
org.openqa.selenium.remote.SessionNotFoundException:FirefoxDriver 调用 quit() 后不能使用。构建信息:版本:'2.53.1', 修订:'a36b8b1cd5757287168e54b817830adce9b0158d',时间: '2016-06-30 19:26:09' 系统信息:主机:'EIS011',ip:'192.168.0.18', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_111' 驱动信息: driver.version: RemoteWebDriver

这是我的代码供您参考-

所以这是我的测试用例类。

2) 这是我调用我使用页面对象模型的方法的类。

如果你们不明白我的问题,请告诉我。请帮忙,因为我已经被困了好几天了。

【问题讨论】:

    标签: java maven selenium testng


    【解决方案1】:

    如果您要运行更多测试,则不应致电WebDriver.quit();如果你想关闭浏览器,你应该只调用WebDriver.close(),它会关闭浏览器但不会终止驱动进程。

    仅在最后一次测试后致电quit()。如果您在每次测试后调用quit(),为了运行下一个测试,您需要创建一个新的驱动程序实例,我认为这样做没有多大意义。

    【讨论】:

    • 嘿 SantiBailors ,非常感谢您的回复,但我尝试这样做,当我使用 webDriver.close () 时,它显示了这个错误。 org.openqa.selenium.remote.UnreachableBrowserException:与远程浏览器通信时出错。它可能已经死了。
    • @piyushjolly 我在您的代码中看不到对close() 的调用,无论如何听起来您在调用quit() 之后调用close(),这是错误的。只需按照我在回答中提到的呼叫顺序,并在此处发布您从中获得的可能错误。 PS 方法和变量的名称应该以小写字母开头,这是一个公认的约定,基本上每个人都遵循。 PPS 发布代码时不要使用屏幕截图,只需将文本格式化为代码,每行前缀 4 个空格,如果您选择文本并单击“代码”按钮,也会发生这种情况。
    【解决方案2】:

    出现问题是因为您的所有 @Test 注释测试方法似乎都使用相同的 driver 实例,并且在您的一种测试方法中您正在调用 quit() 方法。因此,下面的测试方法尝试访问处于无效状态的 webdriver 来解释异常。

    有几种方法可以解决此问题。

    1. 使用ThreadLocal 变体来跟踪您的webdriver 实例,并通过beforeInvocation()(TestNG 侦听器)或@BeforeMethod 将有效的webdriver 实例推入其中,并通过a 清理threadlocal 实例afterInvocation() 或通过 @AfterMethod 方法。
    2. 您将 webdriver 实例化和清理移动到您的 @Test 方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 2017-08-06
      • 2018-12-06
      • 1970-01-01
      • 2022-01-27
      相关资源
      最近更新 更多