на 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, время: 05:25. |