栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SessionNotFoundException:会话ID为null。调用quit()后使用WebDriver吗?(硒)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SessionNotFoundException:会话ID为null。调用quit()后使用WebDriver吗?(硒)

我不认为

driver
null
,这将导致
NullPointerException
它无法知道将它转化成一个方式
SessionNotFoundException
。因此,看起来像
driver
已经创建然后结束了,即
.quit()
如错误消息中所建议的那样被调用得太早。

我认为这是正在发生的事情:

  1. 它开始第一个测试并调用
    @Before
    。这导致
    InitializeWebDriver.driver
    被设置为新的
    WebDriver
  2. 只有在此之后,它才会加载class
    CommonSteps
    ,因此
    CommonSteps.driver
    将其设置
    WebDriver
    为刚刚创建的。
  3. 测试成功运行,并在方法中的
    .quit()
    上调用。
    WebDriver``@After
  4. 然后开始第二次测试。
    WebDriver
    在该
    @Before
    方法中创建一个新值。
    InitializeWebDriver.driver
    已更新;但是,
    CommonSteps.driver
    不会更新,因为
    driver = InitializeWebDriver.driver;
    只有在
    CommonSteps
    首次加载时才会发生。
  5. 因此,当它到达
    driver.get(value)
    driver
    是原来的
    WebDriver
    ,这已是
    .quit()

这是假设您要连续进行测试。如果它们是并行的,则将有所不同。

基本上,问题在于您使用的静态属性

WebDriver
,不应在不同的测试运行之间共享这些属性。自从我完成这些工作已经有一段时间了,而且我不记得您是如何存储范围为测试运行的变量的。(在任何情况下,我都无法确定地回答,因为您还没有说明您使用的是哪个测试框架:JUnit,还是其他?)因此,您必须自己修复它,或者询问如何在您使用的任何框架中获取测试范围的变量。

那是您想要正确执行的操作。如果您只想进行廉价的修复,并且不打算并行运行测试,我怀疑可以通过更改

driver.get(value);
为进行修复
InitializeWebDriver.driver.get(value);
。实际上,我建议您还是尝试更改此设置,以确保我对此是正确的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454249.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号