【问题标题】:Selenium WebdriverJS won't even run the exampleSelenium WebdriverJS 甚至不会运行该示例
【发布时间】:2015-04-11 01:04:58
【问题描述】:

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

Ubuntu 14.04

NodeJS v0.12.0,低于 Express 4.0

Java OpenJDK 1.6.0_34

Chrome 稳定版 33.0.1750.152

Chromedriver 2.9


我创建了一个 Digital Ocean droplet,并选择了已安装 Node 的 Ubuntu 14.04。我 apt-get 安装了 Chrome、Git 和 Java,然后 npm install'd PM2 和 Grunt。

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

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

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 &

但这并没有什么不同。

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

【问题讨论】:

  • 你试过ctrl + r吗?
  • Chromedriver 2.9 已过时。使用较新的版本怎么样?另外,如果我将您的代码剪切并粘贴到此处的文件中并执行它,它就可以工作。我有Chormedriver 2.11。 (我应该升级...)您确实不需要需要selenium-standalone 或弄乱环境变量或使用xvfb 或使用Java。
  • 我不想在你的电脑上运行它,我想在我的电脑上运行它。 ;) 在 2.14 上同样的问题,只是三重检查。 xvfb的目的是让它在没有gui的服务器上可用,环境变量是针对Node的;如果我要使用 selenium-webdriver 模块,我确实需要它们。它需要自动化,否则我只会从命令行使用java -jar 调用它。还有其他想法吗?
  • 看起来您继续前进并且正在使用无头浏览器,这可能是正确的做法。只是想检查一下,您是否正在运行 Jenkins 的测试?如果您还没有检查过stackoverflow.com/questions/22558077/…
  • nilesh,我实际上不是从 Jenkins 运行它的!但我确实用DISPLAY:99 尝试了一些环境变量的东西,但仍然没有任何运气。不过谢谢你,真的!最相关的答案^^

标签: javascript node.js selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

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

Headless Browser and scraping - solutions [closed]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多