chromedriver工作,但" phantomjs无法使用css选择器找到项目"

时间:2014-08-05 21:03:16

标签: phantomjs nightwatch.js

我正在为我的工作设计一些端到端的测试,我已经通过chromedriver使用nightwatch.js了解并运行。但是,我们希望在我们的服务器上运行,因此我希望能够使用phantomjs运行它。尽管测试使用chromedriver执行时没有发生任何事故,但Phantomjs会产生以下错误“phantomjs无法使用css选择器找到项目”

有什么想法吗?我已经在互联网上寻找解决方案,但无济于事。

2 个答案:

答案 0 :(得分:5)

首先,请在此处检查决定'评论:https://github.com/nightwatchjs/nightwatch/issues/243#issuecomment-94287511

根据从浏览器传递到网站的用户代理信息,该网站会返回不同的XHTML数据吗?因此,如果您想使用phantomjs,但可以通过用户代理将其作为不同的浏览器进行欺骗,您可以配置phantomjs的用户代理功能,如此(欺骗Mac Chrome):

"desiredCapabilities": {
  "browserName": "phantomjs",
  "phantomjs.cli.args" : ["--ignore-ssl-errors=true"],
  "phantomjs.page.settings.userAgent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"
}

然后您的测试应该与您的其他浏览器一样。使用您喜欢的任何浏览器,您可以检查它在此处发送的用户代理字符串:http://www.httpuseragent.org/。以下是其他一些例子:

// Mac Chrome 46
"phantomjs.page.settings.userAgent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"

// Windows Chrome 46
"phantomjs.page.settings.userAgent" : "Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36"

// Mac Firefox 42.0
"phantomjs.page.settings.userAgent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:42.0) Gecko/20100101 Firefox/42.0"

// Windows Firefox 42.0
"phantomjs.page.settings.userAgent" : "Mozilla/5.0 (Windows NT 6.3; rv:42.0) Gecko/20100101 Firefox/42.0"

// PhantomJS 2.0
"phantomjs.page.settings.userAgent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.0.0 Safari/538.1"

答案 1 :(得分:1)

我有时会在不同的浏览器中产生这种效果,而不仅仅是幻像。原因似乎是在评估一个浏览器时没有加载元素(并且为另一个浏览器加载)。您可以通过在故障点检查屏幕截图来调试它。

我的解决方案是使用waitForElementPresent / Visible。