【问题标题】:Node Selenium WebDriver - Target browser must be a string, but is <object>Node Selenium WebDriver - 目标浏览器必须是字符串,但是是 <object>
【发布时间】:2014-10-29 08:55:10
【问题描述】:

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

我已经安装了 selenium webdriver:

$ 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 在上述测试中被调用了两次如何,第一次调用 capabilities.get(Capability.BROWSER_NAME) 返回“chrome”,这很好,但第二次调用时,它有 null 和保释。我搞不定。

任何指针表示赞赏。

【问题讨论】:

    标签: javascript node.js selenium functional-programming mocha.js


    【解决方案1】:

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

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

    这里第二次,第2行:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 2017-10-04
      • 2019-10-15
      • 2016-02-14
      • 1970-01-01
      • 2017-05-18
      相关资源
      最近更新 更多