节点selenium-webdriver"错误:在#34;等待WebDriver服务器超时。

时间:2014-05-08 16:04:07

标签: node.js selenium selenium-webdriver

按照'Getting Started' section of the WebDriverJs documentation中的说明操作并在从其网站运行此代码段之后:

var driver = new webdriver.Builder().
   withCapabilities(webdriver.Capabilities.chrome()).
   build();

driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnG')).click();
driver.wait(function() {
 return driver.getTitle().then(function(title) {
   return title === 'webdriver - Google Search';
 });
}, 1000);

driver.quit();

我收到此错误:

Error: Timed out waiting for the WebDriver server at http://XXX.XXX.X.XXX:60065/
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>
==== async task ====
WebDriver.createSession()

我使用找到here的Chrome驱动程序的mac32版本运行OSX Mavericks。 chromedriver可执行文件位于我的/usr/local/bin目录中,可以在path上访问。

我注意到的一件事是,当我从命令行运行chromedriver时,它在端口9515上运行,而节点代码在60065上查找它。但是,运行chromedriver不需要任何额外的配置。

有人对我为何会收到此错误有任何想法吗?

3 个答案:

答案 0 :(得分:7)

我今天遇到了这个确切的问题,因为我可以说它是当前版本的selenium-webdriver包(2.41.0)的错误。

There is a bug filed with the Selenium project但我不认为修复程序已经进入了npm。

降级为Chromedriver版本2.9.248307为我工作。

答案 1 :(得分:0)

基于@Andrej Kaurin评论:

你可以设置 directConnnect: true 在量角器配置中。

设置此项后,量角器将直接与浏览器驱动程序连接,不需要selenium。

更多详情:https://github.com/angular/protractor/blob/master/docs/server-setup.md#connecting-directly-to-browser-drivers

答案 2 :(得分:0)

对我来说,有效的方法是先使用ChromeDriver的s:33:"a:2:{i:0;s:2:"80";i:1;s:3:"112";}"; 版本,然后再使用Chrome浏览器$industries = unserialize($industries); 的版本

以下是获取Chrome驱动程序的链接: http://chromedriver.storage.googleapis.com/index.html?path=78.0.3904.70/

如何检查您使用的Chrome版本:https://support.chall.com/hc/en-us/articles/200336349-How-do-I-determine-what-version-of-Google-Chrome-I-m-using-