【问题标题】:Running Selenium on NodeJs在 NodeJs 上运行 Selenium
【发布时间】:2017-07-17 07:48:22
【问题描述】:

这是我在Windows 7 环境中在NodeJs 上使用selenium-webdriver 的第一次尝试。以下是我为使其发挥作用所做的工作:

  1. 已安装 NodeJs 7.5(Selenium 官方支持,如其 Git https://github.com/SeleniumHQ/selenium/tree/master/javascript/node/selenium-webdriver 所述)
  2. 使用npm 安装selenium-webdriver
  3. 下载chromedriver.exe 2.27"C:\Selenium Utilities\chromedriver"
  4. chromedriver 添加到我的PATHC:\Selenium Utilities\chromedriver;
  5. 从 Selenium Git 页面添加了我的第一个测试:

    var webdriver = require('selenium-webdriver'),
            By = webdriver.By, until = webdriver.until;
    
    var driver = new webdriver.Builder()
        .forBrowser('chrome')
        .build();
    
    driver.get('http://www.google.com/ncr');
    driver.findElement(By.name('q')).sendKeys('webdriver');
    driver.findElement(By.name('btnG')).click();
    driver.wait(until.titleIs('webdriver - Google Search'), 1000);
    driver.quit();
    
  6. 尝试通过node test.js运行测试

因此,我收到错误消息(摘录):

"...throw new Error('不知道如何构建驱动:'+浏览器"

“错误:不知道如何构建驱动程序:C;您是否忘记调用 使用服务器(网址)?”

我做错了什么?我是否需要运行单独的 Selenium 服务器才能运行它?

【问题讨论】:

  • 你解决了吗?

标签: javascript node.js selenium selenium-webdriver


【解决方案1】:

您的代码对我来说看起来不错,所以我运行它来检查。我可以确认runs fine(在 macOS Sierra 上)。 Here's a link to the repo I created

看起来您可能需要延长页面标题的等待时间,但有时我发现加载 Google 的页面标题需要超过一秒钟的时间。

另一种选择是尝试托管服务,而不是设置自己的 selenium 服务器。有很多可用的,我刚刚为这个目的制作了Obehave。需要零设置 - 您可以立即开始编写测试。

【讨论】:

    【解决方案2】:

    通过 npm 安装 chromedriver。

    npm install chromedriver --save-dev
    

    然后在js上面添加chrome:

    var chrome = require('selenium-webdriver/chrome');
    

    最后的脚本:

    var webdriver = require('selenium-webdriver'),
            By = webdriver.By, until = webdriver.until;
            var webdriver = require('selenium-webdriver');
    
    var chrome = require('selenium-webdriver/chrome');
    
    var driver = new webdriver.Builder()
        .forBrowser('chrome')
        .build();
    
    driver.get('http://www.google.com/ncr').then(function(){
        driver.findElement(By.name('q')).sendKeys('webdriver');
        driver.findElement(By.name('btnK')).click();
        driver.quit();
    });
    

    【讨论】:

    • 为什么 `var chrome = require('selenium-webdriver/chrome)' 如果它从未使用过?
    【解决方案3】:

    chrome驱动版本和安装的chrome必须兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 2021-09-17
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多