Невозможно найти веб-элемент с помощью JavaScript Selenium Webdriver - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь выполнить простой тест с селеном, но безуспешно.

У меня есть тест конфигурации javascript:

chrome.config.js

var driver = new webdriver.Builder().
  .forBrowser('chrome')
  .build();


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

driver.findElement(By.name('btnI')).click();

Я получаю следующую ошибку:

(узел: 5921) UnhandledPromiseRejectionWarning: WebDriverError: элемент не взаимодействует (информация о сеансе: chrome = 70.0.3538.77) (информация о драйвере: chromedriver= 2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634), платформа = Linux 4.15.0-42-generic x86_64) в Object.checkLegacyResponse (/home/pablo/workspace/bricks-editor/node_lib/er.er.er.erb)15) в parseHttpResponse (/home/pablo/workspace/bricks-editor/node_modules/selenium-webdriver/lib/http.js:533:13) в Executor.execute (/ home / pablo / workspace / bricks-editor / node_modules /selenium-webdriver / lib / http.js: 468: 26) at at process._tickCallback (internal / process / next_tick.js: 188: 7) (узел: 5921) UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(идентификатор отклонения: 1) (узел: 5921) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели.В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.

Что здесь может быть не так?

Мои настройки:

версия узла: 8.11.3

версия хромированного драйвера: 2.44.609551

ОС: Ubuntu 18.0.4 LTS 64 бита

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

После некоторых тестов я смог выполнить свой код со следующими изменениями.

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

var driver = new webdriver.Builder()
  .forBrowser('chrome')
  .build();


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

var btnI;

driver.findElements(By.name('btnI')).then(function(list) {
  btnI = list[1];
  btnI.click();
});
0 голосов
/ 13 декабря 2018

Есть два поля ввода с одинаковым @name: первое скрыто.Вам нужно обработать второй (видимый):

driver.findElement(By.cssSelector('div.FPdoLc input[name="btnI"]')).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...