Selenium WebdriverJS 甚至不会 运行 这个例子

Selenium WebdriverJS won't even run the example

好的,我想我已经完成了这里的功课...我这辈子都无法让 official Selenium Webdriver npm module 工作;我卡住了。这是我所有的版本...

Ubuntu 14.04

NodeJS v0.12.0, underneath Express 4.0

Java OpenJDK 1.6.0_34

Chrome Stable 33.0.1750.152

Chromedriver 2.9


我创建了一个 Digital Ocean droplet 并选择了 Ubuntu 14.04,并且已经安装了 Node。我 apt-get 安装了 Chrome、Git 和 Java,然后 npm install'd PM2 和 G运行t.

我下载了Chromedriver 2.9,授予它执行权限(chmod a+x),并将它移动到/usr/local/bin。我可以在任何地方 运行 "chromedriver",它会给出消息 Starting ChromeDriver (v2.9.248304) on port 9515。此外,netstat -lp 确认 Chrome 驱动程序正在侦听端口 9515;它正在工作。

我使用 Selenium Standalone npm 模块获取了供 selenium-webdriver 模块使用的 Selenium jar。我 运行 这些命令...

npm install selenium-standalone@latest -g

selenium-standalone install

它告诉我 Selenium .jar 已经下载到... /usr/local/lib/node_modules/selenium-standalone/.selenium/selenium-server/2.44.0-server.jar

进入最重要的内容... Selenium Webdriver 模块。根据 npm 文档,我 运行 这些命令位于我的 Node 应用程序的根目录中。

export SELENIUM_SERVER_JAR=/usr/local/lib/node_modules/selenium-standalone/.selenium/selenium-server/2.44.0-server.jar

SELENIUM_BROWSER=chrome

我的代码

基本上直接来自WebdriverJS documentation

function init(value, cb) {

  console.log('Started task...');

  var webdriver = require('selenium-webdriver'),
  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();

  console.log('done');
  
  cb();
}

init(true, function() {
  
  // do other stuff
});

输出

我尝试过的其他东西

我读到 here 你应该用它安装 xvfb 然后 运行 这个命令...

Xvfb :0 -ac -screen 0 1024x768x24 &

但这并没有什么不同。

我尝试使用来自其存储库的 Oracle Java 和 OpenJDK 1.7。我还看到了很多可以通过执行 java -jar -flagsandstuff 传递的命令行选项,但它似乎不是使用 Selenium Webdriver 模块的解决方案。我没有想法和沮丧。

不值得;在 PhantomJS 之上有更好的无头浏览器模块运行。我终于找到了这个 post 大约有 30 种不同的解决方案!我选择了 Nightmare.

Headless Browser and scraping - solutions [closed]