我正在使用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
答案 0 :(得分:7)
PhantomJS在测试之间保持会话的事实是GhostDriver中的known problem,即PhantomJS中的Selenium Webdriver实现。
我认为这个问题将通过PhantomJS 2版本修复。该错误已在GhostDriver 1.1.1中修复,但没有包含此GhostDriver版本的PhantomJS版本。
答案 1 :(得分:2)
我知道如果您使用GhostDriver,Selenium Grid会有一个“cleanSession”选项。另外,我很确定常规的WebDriver类在本地WebDriver实例上有一个选项:
driver.manage().deleteAllCookies();
答案 2 :(得分:0)
PhantomJS 2.0版解决了这个问题。如果您有Linux环境,则需要克隆源代码并进行编译,如下所示:
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 2.0
./build.sh