«ReferenceError: документ не определен» при тестировании в браузере с помощью mocha webdriver - PullRequest
0 голосов
/ 29 августа 2018

Я использую webdriver с мокко. Когда я пытаюсь использовать «document.getElementById», я получаю «ReferenceError: документ не определен»

Я тестирую в браузере (не без головы).

Любая найденная информация указывает на то, что проблема возникает при тестировании без головы (т. Е. В Node) и требует jsdom-global. Я попытался установить это, чтобы посмотреть, что произойдет. Он избавился от ошибки «ReferenceError: документ не определен», но «document.getElementById» в итоге оказался неопределенным (что имеет смысл, так как я тестирую в браузере)

Верно ли, что при тестировании в браузере я "должен" иметь возможность использовать "document.getElementById"?

Спасибо

Примечание: это только для одного особого случая. Я знаю, что это не стандартное использование.

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Если вы хотите использовать вызовы браузера вместо методов webdriver, вам нужно использовать executeScript .

В вашем случае это будет примерно так, учитывая, что вы получите идентификатор в качестве параметра:

driver.executeScript(`document.getElementById("${elementId}")`);
0 голосов
/ 29 августа 2018

Если вы пытаетесь автоматизировать использование селена для тестирования браузера, вам не следует использовать document.getElementById.

Находит элементы по атрибуту ID. Этот локатор использует селектор CSS * [id = "$ ID"], а не document.getElementById. Подробнее здесь [https://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index_exports_By.html]

(Обновлено. Предполагается, что вы проводите тест браузера. Вот полный пример с Mocha с использованием id:

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();
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...