调用quit()后,无法使用FirefoxDriver

时间:2017-01-13 10:09:38

标签: java maven selenium testng

当我使用mavenTestNG项目中运行多个测试用例时,出现此错误。尝试了多种解决方案,但没有一种方法适合我 <{1}}被调用后无法使用FirefoxDriver

我的步骤如下: -

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

@的Test2 我的第二个案例是 打开浏览器
登录申请书 验证URL
关闭浏览器。

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

  

PASSED:loginfail FAILED: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

以下是我的代码供您参考 -

所以这是我的测试类。 enter image description here

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

enter image description here

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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