【问题标题】:PhantomJS + Selenium , How to se user agent for links that open in new window?PhantomJS + Selenium,如何为在新窗口中打开的链接设置用户代理?
【发布时间】:2015-07-11 11:41:37
【问题描述】:

我正在尝试使用 selenium 和 phantomjs 单击在新选项卡 (target="_blank") 中打开的链接,但问题是当 phantomjs 打开链接时,它没有设置为其定义的用户代理使用 DesiredCapabilities。如果链接在当前窗口中打开,一切正常,但一旦在新窗口中打开,用户代理就是默认的!

如何全局设置用户代理? (顺便说一句,我正在使用 python)

【问题讨论】:

  • 如果您可以提供完整的代码示例,可能更适合作为 selenium github 问题。

标签: selenium phantomjs


【解决方案1】:

经过一番调查,我发现问题似乎来自ghost driver。所以我检查了 ghost driver github,发现问题从 2013 年开始就存在,并且有一个临时解决方案。我在这里写了解决方案,因为它不是 google 搜索中 github 问题的结果(https://github.com/detro/ghostdriver/issues/273):

链接 target = "_blank" 和 window.open 的保证解决方案 - 在 desiredCapabilities 中设置 phantomjs.page.customHeaders.User-Agent。在我的情况下(window.open)可能会打开一个带有“about:blank”url的新窗口,然后在handles数组中找到它来激活和浏览。

因此,虽然不建议在 selenium 文档的自定义标题中设置 userAgent,但这是目前全局设置 userAgent 的唯一方法,因此它不会在新窗口中更改。

【讨论】:

  • User-Agent 甚至无法从内部 Javascript 设置它。 PhantomJS 距离成为一个完整的浏览器还很遥远,因为它没有遵循很多常见的行为。如果您对 ram 使用没有太大问题,请切换到 Firefox + xephyr/vnc。 PhantomJS 至少有 3 大缺陷(某些功能上的用户代理、iframe 渲染和无法聚焦)。
【解决方案2】:

试试这个代码。为我工作。

GetEval("window.open('Url')"); var winHandle = _sel.UnderlyingWebDriver.WindowHandles; _sel.UnderlyingWebDriver.SwitchTo().Window(winHandle[1]); _sel.UnderlyingWebDriver.Manage().Window.Maximize();

【讨论】:

  • 这和我的问题有什么关系?!您的代码在新窗口中打开一个 url 并切换到它并最大化窗口!
  • 好的,但是如果你浏览我的代码,你会看到现在你可以在新窗口上工作了。
猜你喜欢
  • 2011-10-19
  • 2013-10-09
  • 1970-01-01
  • 2020-12-01
  • 2015-02-09
  • 1970-01-01
  • 2015-09-13
相关资源
最近更新 更多