我正在使用Selenium Webdriver(Java)和PhantomJS来测试复杂的JS驱动的网站。 我的问题是,PhantomJS浏览器保持两个测试之间的会话,这会导致测试设置错误。
如果我使用Firefox运行测试,那么一切都会正常运行,因为Firefox对每个测试用例都使用干净的会话。
解决该问题的第一个尝试就是通过JS注入清除本地存储。 Cookie被暴露于API driver.manage().deleteAllCookies();的硒删除
但是不允许在不访问页面的情况下执行JavaScript。 因此,从" about:blank"启动浏览器会导致错误。
那么,如何配置phantomjs webdriver清除会话?
我正在使用phantomjs和webdriver,因为事实证明硒网格服务不够稳定。 所以我像这样启动我的phantomjs实例:
phantomjs --webdriver=1234
我只是有同样的问题! 我正在使用硒+ phantomjs + wendriver.io +摩卡咖啡。 为每个测试启动一个新的会话似乎是合乎逻辑的,以便它们"干净"。
是的,我认为那是phantomjs中的某种错误或泄漏的规范。 因为当前网址在两个测试之间被重置。
我也有两个带有两个不同URL的测试。 但是饼干显然漏了
我收回这一点,看来效果很好。 这是一个测试库+测试:github.com/mbrevda/phantomjs-test
PhantomJS在测试之间保持会话的事实是GhostDriver(PhantomJS中的Selenium Webdriver实现)中的一个已知问题。
我想这个问题将在PhantomJS 2版本中解决。 该错误已在GhostDriver 1.1.1中修复,但是没有PhantomJS版本包含此GhostDriver版本。
我知道,如果您使用GhostDriver,则Selenium Grid具有" cleanSession"选项。 另外,我很确定常规WebDriver类在本地WebDriver实例上对此具有一个选项:
driver.manage().deleteAllCookies();
我已经提到过,我不想使用硒网格。我们在生产中使用它,从长远来看,事情是不稳定的。而且我已经使用了deleteAllCookies代码-如问题中所述。如果您知道哪个选项以及如何打开它,请详细说明。
如果您查看Selenium 2.40.0上的更改日志,它具有PhantomJS更改。您是否将最新的2.41.0网格与ghostdriver一起使用?如果没有,可能值得再次尝试。我认为您没有使用Chrome或IE。
...如上所述,我使用PhantomJS作为浏览器。而且我不使用Selenium Grid。我只是将普通的硒及其webdriver API一起使用。 (phantomjs --webdriver = PORT启动与webdriver兼容的phantomjs浏览器)。但是问题是,该会话是持久性的,因此当我运行第二个测试用例时,我的网上商店从另一个起点开始。
2.40.0中的更改可能还会影响客户端PhantomJS。您是否使用PhantomJS选项:phantom.cookiesEnabled = true; ?您应该使用JavascriptExecutor对象具有对Cookie的完全访问权限;你尝试过吗?
刚刚在我的pom.xml中检查了我的依赖项。我使用2.40。启用Puncto Cookies。我可以通过JS休息cookie。但是为此,我必须先加载页面。执行JS并再次加载Page。 (如果我不这样做,我会得到DOM Security异常)。那太糟了。
@schlingel您是说您在问题中"删除了所有cookie"。对我来说,这听起来不像您使用的driver.manage().deleteAllCookies()
@oberlies我照做了。我唯一需要通过JS注入清除(或至少尝试这样做)的是localStorage。尽管如此,仍然无法正常工作。但是无论如何,通过使用maven surefire并行运行测试可以在执行速度上击败PhantomJS。
@schlingel很有可能,但是您应该将此信息放入您的问题中,而不要放在注释中。您说的是"而且我已经使用了deleteAllCookies代码-如问题中所提到的",但是问题中没有出现" deleteAllCookies"。因此,请修改您的问题,例如在代码格式化中明确提到该方法。
我认为很明显,Id使用可用的API。但是,为什么不呢?但是,如果让您感到高兴,我会为您更新问题。
PhantomJS的2.0版解决了此问题。 如果您拥有Linux环境,则需要克隆源代码并进行编译,如下所示:
git clone git://github.com/ariya/phantomjs.git
cd phantomjs
git checkout 2.0
./build.sh
更多信息在这里