Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.11.2019, 02:36
Новичок на форуме
Отправить личное сообщение для AlexBoo Посмотреть профиль Найти все сообщения от AlexBoo
 
Регистрация: 09.11.2019
Сообщений: 5

на 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, 09.11.2019 в 12:38.
Ответить с цитированием
  #2 (permalink)  
Старый 09.11.2019, 09:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

AlexBoo,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 09.11.2019, 12:37
Новичок на форуме
Отправить личное сообщение для AlexBoo Посмотреть профиль Найти все сообщения от AlexBoo
 
Регистрация: 09.11.2019
Сообщений: 5

спасибо, что подсказали.
Исправил, прошу прощения что сразу не предоставил код в подобающем виде

Последний раз редактировалось AlexBoo, 09.11.2019 в 12:45.
Ответить с цитированием
  #4 (permalink)  
Старый 09.11.2019, 20:11
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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/ на адрес своей страницы.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2019, 11:23
Новичок на форуме
Отправить личное сообщение для AlexBoo Посмотреть профиль Найти все сообщения от AlexBoo
 
Регистрация: 09.11.2019
Сообщений: 5

спасибо, сработало.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить содержимое во всех тегах с одинаковым классом Jostorl Javascript под браузер 4 09.06.2017 14:38
Как заставить JS обрабатывать функции для всех блоков с заданным классом? GTX14 Общие вопросы Javascript 1 04.04.2015 16:12
Как вывести содержимое PHP файла с помощью JS? pavdin Серверные языки и технологии 6 22.12.2010 14:16