当我使用maven
在TestNG
项目中运行多个测试用例时,出现此错误。尝试了多种解决方案,但没有一种方法适合我
<{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
以下是我的代码供您参考 -
2)这是我正在调用我正在使用页面对象模型的方法的类。
如果你们不明白我的问题,请告诉我。请帮忙,因为我已经坚持了好几天了。
答案 0 :(得分:0)
如果要进行更多测试,则不应致电WebDriver.quit()
;如果你想关闭浏览器,你应该只调用WebDriver.close()
,这会关闭浏览器,但不会终止驱动程序。
仅在最后一次测试后致电quit()
。如果您在每次测试后调用quit()
,为了运行下一个测试,您需要创建一个新的驱动程序实例,我不认为这样做有很多意义。
答案 1 :(得分:0)
出现问题是因为所有@Test
注释的测试方法似乎都在使用相同的driver
实例,并且在您调用quit()
方法的一个测试方法中。因此,以下测试方法尝试访问处于无效状态的webdriver,该状态解释了异常。
有几种方法可以解决这个问题。
ThreadLocal
变量进行webdriver实例跟踪,并通过beforeInvocation()
(TestNG侦听器)或@BeforeMethod
将有效的webdriver实例插入其中并清除通过afterInvocation()
或@AfterMethod
方法启动threadlocal实例。@Test
方法。