在使用Mocha WebDriver测试浏览器时,出现“ ReferenceError:未定义文档”

时间:2018-08-29 16:49:16

标签: javascript node.js selenium-webdriver mocha

我正在将Webdriver与Mocha结合使用。当我尝试使用“ document.getElementById”时,我最终收到“ ReferenceError:未定义文档”

我正在测试浏览器(不是无头)。

我发现的任何信息似乎都表明该问题在无头测试(即,在Node中)时发生,并且需要jsdom-global。我尝试安装它只是为了看看会发生什么。它摆脱了“ ReferenceError:未定义文档”错误,但是“ document.getElementById”最终将变为未定义(这是合理的,因为我正在测试浏览器中)

我是否纠正在测试浏览器时“应该”使用“ document.getElementById”的问题?

谢谢

注意:这仅是一种特殊情况。我知道这不是标准用法。

2 个答案:

答案 0 :(得分:0)

如果您尝试使用硒自动进行浏览器测试,则不应使用document.getElementById。

通过ID属性查找元素。此定位器使用CSS选择器* [id =“ $ ID”],而不使用document.getElementById。 在这里查看更多 [https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html]

(已更新,假设您正在进行浏览器测试,这是使用ID的Mocha的完整示例:

var webdriver = require('selenium-webdriver'),
  By = webdriver.By,
  until = webdriver.until;

async function test() {
  var driver = await new webdriver.Builder()
    .usingServer()
    .withCapabilities({ browserName: 'chrome' })
    .build();

  await driver.get('http://www.google.com');

  let searchField = await driver.findElement(By.id('lst-ib'));
  searchField.sendKeys('webdriver');
}

describe('Describe test', function() {
  this.timeout(50000);
  it('Some test', function(done) {
    test().then(function() {
      done();
    });
  });
});

答案 1 :(得分:0)

如果要使用浏览器调用而不是Webdriver的方法,则需要使用executeScript

在您的情况下,考虑到您会收到id作为参数,情况将是这样:

driver.executeScript(`document.getElementById("${elementId}")`);