всегда терпеть неудачу селен основной пример - PullRequest
0 голосов
/ 15 мая 2018

Я установил драйвер селена npm, и теперь я хочу попробовать его использовать.

Я создал файл js test.js

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

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

driver.get('http://demo.mahara.org');
driver.findElement(By.id('login_login_username')).then(function(links){
console.log('Found', links.length, 'Wiki links.' )
driver.quit();
});

из моей консоли я отправляю этот узел cmd

$ node tests \ js \ test.js

(узел: 5648) UnhandledPromiseRejectionWarning: NoSuchElementError: Невозможно найти элемент: * [id = "login_login_username"]
at Object.throwDecodedError (C: \ xampp \ htdocs \ next-noregressiontests \ src \ test \ javascript \ node_modules \ selenium-webdriver \ lib \ error.js: 550: 15)
at parseHttpResponse (C: \ xampp \ htdocs \ next-noregressiontests \ src \ test \ javascript \ node_modules \ selenium-webdriver \ lib \ http.js: 542: 13)
в Executor.execute (C: \ xampp \ htdocs \ next-noregressiontests \ src \ test \ javascript \ node_modules \ selenium-webdriver \ lib \ http.js: 468: 26)
в
at process._tickCallback (internal / process / next_tick.js: 182: 7) (узел: 5648) UnhandledPromiseRejectionWarning: необработанное отклонение обещания. Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch (). (идентификатор отклонения: 1) (узел: 5648) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания устарело. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.

Не могу понять, в чем проблема

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вам нужно дождаться появления элемента после загрузки страницы. Итак, после driver.get(...), добавьте это:

driver.wait(until.elementLocated(by.id('login_login_username')), 10000, 'Cannot find element');

Это будет продолжать искать элемент и время ожидания через 10 секунд, если он не найдет его.

0 голосов
/ 15 мая 2018

Этот элемент

[ID = "login_login_username"]

попробуйте это:

[@id="login_login_username"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...