【发布时间】: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