我不认为
driver是
null,这将导致
NullPointerException它无法知道将它转化成一个方式
SessionNotFoundException。因此,看起来像
driver已经创建然后结束了,即
.quit()如错误消息中所建议的那样被调用得太早。
我认为这是正在发生的事情:
- 它开始第一个测试并调用
@Before
。这导致InitializeWebDriver.driver
被设置为新的WebDriver
。 - 只有在此之后,它才会加载class
CommonSteps
,因此CommonSteps.driver
将其设置WebDriver
为刚刚创建的。 - 测试成功运行,并在方法中的
.quit()
上调用。WebDriver``@After
- 然后开始第二次测试。
WebDriver
在该@Before
方法中创建一个新值。InitializeWebDriver.driver
已更新;但是,CommonSteps.driver
不会更新,因为driver = InitializeWebDriver.driver;
只有在CommonSteps
首次加载时才会发生。 - 因此,当它到达
driver.get(value)
,driver
是原来的WebDriver
,这已是.quit()
。
这是假设您要连续进行测试。如果它们是并行的,则将有所不同。
基本上,问题在于您使用的静态属性
WebDriver,不应在不同的测试运行之间共享这些属性。自从我完成这些工作已经有一段时间了,而且我不记得您是如何存储范围为测试运行的变量的。(在任何情况下,我都无法确定地回答,因为您还没有说明您使用的是哪个测试框架:JUnit,还是其他?)因此,您必须自己修复它,或者询问如何在您使用的任何框架中获取测试范围的变量。
那是您想要正确执行的操作。如果您只想进行廉价的修复,并且不打算并行运行测试,我怀疑可以通过更改
driver.get(value);为进行修复
InitializeWebDriver.driver.get(value);。实际上,我建议您还是尝试更改此设置,以确保我对此是正确的。



