на selenium webdriver js нужно вывести содержимое всех тегов с классом item
Пишу автотест на selenium webdriver js, в котором нужно вывести содержимое тегов div class="item" (' Item 1 ', ... ' Item 4 '). Пробовал получить массив класса list с дочерними элементами item и найти все элементы по классу item и перебрать в цикле, но у меня ничего не вышло. Подскажите как это сделать
autotest.js: const { By, Key, until } = require("selenium-webdriver"); const webdriver = require("selenium-webdriver"); require("chromedriver"); let promise = require("selenium-webdriver").promise; await driver.get('http://www.test.site') ; let pendingElements = driver.findElements(By.className('item')); pendingElements.then(function (elements) { let pendingHtml = elements.map(function (elem) { return elem.getInnerHtml(); }); promise.all(pendingHtml).then(function (allHtml) { console.log(allHtml); // Здесь по логике я должен получить массив значений (Item 1, Item 2 ...) }); }); test.site.html: <body> <div class="list> <div class="item"> <div> <strong> Item 1 </strong> </div> </div> <div class="item"> <div> <strong> Item 2 </strong> </div> </div> <div class="item"> <div> <strong> Item 3 </strong> </div> </div> <div class="item"> <div> <strong> Item 4 </strong> </div> </div> </div> </body> Данный код выдает ошибку (not a function): TypeError: pendingElementsConfigList.then is not a function at autoTest (/home/automation_testing/tests/autoTest.js:69:35) at process._tickCallback (internal/process/next_tick.js:68:7) если вывести нулевой элемент: console.log(pendingElements[0]); то в консоли выведет это: WebElement { driver_: Driver { session_: Promise { [Session] }, executor_: Executor { w3c: true, customCommands_: [Map], log_: [Logger] }, fileDetector_: null, onQuit_: [Function: onQuit] }, id_: Promise { '781fdd8b-08e5-4aee-8ce6-c3b800a75956' } } из этого как-то нужно вывести значения элементов с классом item |
AlexBoo,
Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
спасибо, что подсказали.
Исправил, прошу прощения что сразу не предоставил код в подобающем виде |
const { Builder, By, Key, until } = require("selenium-webdriver"); (async() => { let driver = await new Builder().forBrowser("chrome").build(); await driver.get("http://localhost:5001/"); let pendingElements = driver.findElements(By.className("item")); pendingElements.then(function(elements) { let pendingHtml = elements.map(function(elem) { return elem.getText(); }); Promise.all(pendingHtml).then(function(allHtml) { console.log(allHtml); }); }); })(); Замените http://localhost:5001/ на адрес своей страницы. |
спасибо, сработало.
|
Часовой пояс GMT +3, время: 18:01. |