8

我正在使用 Selenium Webdriver (Java) 和 PhantomJS 来测试一个复杂的 JS 驱动的网站。我的问题是,PhantomJS 浏览器会在两个测试之间保持会话,这会导致测试设置出错。

如果我使用 Firefox 运行测试,一切正常,因为 Firefox 对每个测试用例都使用干净的会话。

我第一次尝试解决这个问题是通过 JS 注入清除本地存储。cookie 被 Selenium 删除API driver.manage().deleteAllCookies();

但是不允许在不访问页面的情况下执行 JavaScript。所以在“about:blank”启动浏览器会导致错误。

那么,如何配置我的 phantomjs webdriver 以清除会话?

我正在使用 phantomjs 和 webdriver,因为 selenium-grid 服务不够稳定。所以我像这样启动我的 phantomjs 实例:

phantomjs --webdriver=1234
4

3 回答 3

7

PhantomJS 在测试之间保持会话这一事实是 GhostDriver 中的一个已知问题,它是 PhantomJS 中的 Selenium Webdriver 实现。

我想这个问题将在 PhantomJS 2 版本中得到解决。该错误已在 GhostDriver 1.1.1 中修复,但没有包含此 GhostDriver 版本的 PhantomJS 版本。

于 2014-05-15T14:08:39.030 回答
2

我知道如果您使用GhostDriver ,Selenium Grid 有一个“cleanSession”选项。另外,我很确定常规 WebDriver 类在本地 WebDriver 实例上有一个选项:

driver.manage().deleteAllCookies();
于 2014-04-03T14:46:52.680 回答
0

PhantomJS 的 2.0 版本修复了这个问题。如果您有 Linux 环境,则需要克隆源代码并编译,如下所示:

git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 2.0
./build.sh

更多信息在这里

于 2015-07-15T18:00:55.590 回答