【问题标题】:Is Phantomjs session isolation still not working?Phantomjs 会话隔离仍然不起作用吗?
【发布时间】:2016-07-22 13:12:05
【问题描述】:

当我使用 chrome 浏览器运行我的 selenium 测试时,我的所有测试用例都运行良好。使用 phantomjs 浏览器时,浏览器会话似乎不会在每个测试用例后重置。在我的测试用例中,我以用户身份登录,然后导航到某些页面,然后注销。当测试用例碰巧失败时,就会出现问题。浏览器会话未重置,因此当下一个测试用例开始时,失败的测试无法注销。这会导致一次失败后的所有测试用例都失败。

在互联网上搜索此问题的解决方案时,它在 2013 年就已为人所知。我似乎找不到任何关于此问题的最新信息。有最新的解决方法吗?

在每个测试用例之前或之后手动尝试删除 cookie 似乎不起作用。 webDriver.manage().deleteAllCookies();

我正在使用 phantomjs 版本 2.1.1。

【问题讨论】:

  • 同上。尝试过:driver.navigate().to("javascript:localStorage.clear();");capabilities.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true); 似乎没有什么不同。

标签: selenium phantomjs geb ghostdriver


【解决方案1】:

首先PhantomJS is dead,你最好切换到Headless ChromeHeadless Firefox

其次,PhantomJS 是 Webkit 的一个端口,即not thread safe。这意味着,如果您尝试并行运行多个测试,您将看到线程问题,要解决此问题,您需要启动多个 PhantomJS 实例并将每个 GhostDriver 实例连接到不同的 PhantomJS 实例。

您看到的特殊问题是 PhantomJS 无法正确清除自身,唯一的解决方案是在测试完成后终止您正在运行的初始 PhantomJS 实例,然后重新启动一个全新的实例,不幸的是GhostDriver 不支持。

最后一个问题是 GhostDriver 也死了,当 PhantomJS 死时,继续开发没有意义。

TLDR;请改用 Chrome/Firefox Headless 模式。

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多