Node Selenium WebDriver-目标浏览器必须是字符串,但为<对象>

Node Selenium WebDriver - Target browser must be a string, but is <object>

本文关键字:但为 gt lt 字符串 对象 WebDriver- Selenium 目标 浏览器 Node      更新时间:2023-09-26

我正在尝试使用node/mocha进行功能测试。

我已经安装了selenium网络驱动程序:

$ npm install selenium-webdriver

和摩卡

$ npm install -g mocha

我正在使用一个运行Selenium的本地Vagrant盒子,可以看到从以下位置开始的会话:

http://localhost:4444/wd/hub/static/resource/hub.html

当我运行测试时,我会得到以下错误:

TypeError: Target browser must be a string, but is <object>; did you forget to call forBrowser()?

这是我的完整测试:

var webdriver = require('selenium-webdriver');
var assert = require('assert');
var test = require('selenium-webdriver/testing');
var driver = new webdriver.Builder();
driver.forBrowser("chrome");
driver.usingServer('http://localhost:4444/wd/hub');
driver.withCapabilities(webdriver.Capabilities.chrome());
driver.build();
test.describe('Google Search', function() {
  this.timeout(25000);
  test.it('should work', function() {
    var driver = new webdriver.Builder().build();
    driver.get("http://www.google.com");
    driver.findElement(By.name("q")).sendKeys("webdriver");
    driver.findElement(By.name("btnG")).click();
    driver.getTitle().then(function(title) {
     assertEquals("webdriver - Google Search", title);
    });
    driver.quit();
  });
});

最初,声明驱动程序的行都在一行上,但我已经将其拆分,并添加了对forBrowser()的调用,以尝试使其工作。

var driver = new webdriver.Builder().usingServer('http://localhost:4444/wd/hub').withCapabilities(webdriver.Capabilities.chrome()).build();

没有快乐。

我看了看builder.js,似乎功能设置不正确,但我不知道如何修复它-builder.prototype.build在上面的测试中被调用了两次,第一次被称为功能。get(Capability.BROWSER_NAME)返回"chrome",这很好,但第二次被调用时,它有null和bails。我做不出来。

感谢任何指点。

您构建了两次驱动程序。这里一次:

var driver = new webdriver.Builder();
driver.forBrowser("chrome");
driver.usingServer('http://localhost:4444/wd/hub');
driver.withCapabilities(webdriver.Capabilities.chrome());
driver.build();

第二次在这里,在第二行:

  test.it('should work', function() {
    var driver = new webdriver.Builder().build();

第二次出现是不正确的。事实上,它看起来像是代码早期版本遗留下来的一些代码。