Чтобы получить HTML нескольких элементов, вы можете использовать driver.findElements()
найти все совпадения элементов. Это предоставит Promise
, который решает с элементами в Array
.
var pendingElements = driver.findElements(By.className('h11'))
pendingElements.then(function (elements) {
// ...
});
Вам необходимо выполнить итерацию по коллекции и запросить HTML-код каждого элемента. Вы можете использовать Array
«s .map()
создать коллекцию обещаний от getInnerHtml()
:
var pendingHtml = elements.map(function (elem) {
return elem.getInnerHtml();
});
Ждать, чтобы они были решены, вы можете передать коллекцию promise.all()
.
promise.all(pendingHtml).then(function (allHtml) {
// ...
});
Примечание, вам нужна ссылка на Selenium, promise
для этого.
var promise = require('selenium-webdriver').promise;
Комбинированный:
// ...
var promise = require('selenium-webdriver').promise;
var pendingElements = driver.findElements(By.className('h11'))
pendingElements.then(function (elements) {
var pendingHtml = elements.map(function (elem) {
return elem.getInnerHtml();
});
promise.all(pendingHtml).then(function (allHtml) {
// `allHtml` will be an `Array` of strings
});
});
Извините. Не могли бы вы прояснить, каков ваш вопрос? Если вы найдете несколько элементов, начните с множественного числа ['.findElements()'] (http://seleniumhq.github.io/selenium/docs/api/javascript/class_webdriver_WebDriver.html#findElements). –
Я только начал изучать селен прошлой ночью, так что извиняюсь. Если я запустил: var element = driver.findElements (By.className ("hll")); как я могу получить innerhtml каждого индекса –