ghostdriver java_关于java:PhantomJS和Selenium Webdriver-如何清除会话

在使用Selenium Webdriver(Java)和PhantomJS进行复杂的JavaScript驱动网站测试时,作者遇到一个问题,即PhantomJS在不同测试之间保持会话,导致测试设置错误。尝试通过删除所有cookies和使用JavaScript注入来清除本地存储并未成功。文章讨论了可能的解决方案,包括使用Selenium Grid的cleanSession选项和期待PhantomJS 2.0的修复。同时,社区成员提供了关于使用最新Selenium版本和 PhantomJS 源代码编译的建议。
摘要由CSDN通过智能技术生成

我正在使用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

更多信息在这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值