Phantomjs会话隔离仍无效吗?

时间:2016-07-22 13:12:06

标签: selenium phantomjs geb ghostdriver

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

在互联网上搜索这个问题的解决方案时,我们知道这是2013年的问题。我似乎无法找到有关此问题的最新信息。有没有最新的解决方法?

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

我正在使用phantomjs ver 2.1.1。

1 个答案:

答案 0 :(得分:0)

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

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

您看到的特定问题是PhantomJS无法正确清除自身,再次唯一的解决方案是在测试完成后杀死正在运行的初始PhantomJS实例,然后不幸地启动一个干净的新实例GhostDriver不支持。

最后一个问题是GhostDriver也已经死了,当PhantomJS死了时,继续开发毫无意义。

TLDR;改用Chrome / Firefox无头模式。