Jar*_*urg 4 node.js selenium-webdriver
我正在node.js中为selenium编写一个脚本,它将转到一个页面并获取某个css类的innerhtml并将它们存储在一个数组中.
var element = driver.findElement(By.className("hll"));
element.getInnerHtml().then(html){
//returns 1 of the elements html where I want multiples
}
Run Code Online (Sandbox Code Playgroud)
要检索多个元素的html,您可以使用driver.findElements()查找所有匹配元素.这将提供一个Promise解析与元素中的元素Array.
var pendingElements = driver.findElements(By.className('h11'))
pendingElements.then(function (elements) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
您需要遍历集合并请求每个元素的HTML.你可以用Array's .map()来创建一个承诺集合getInnerHtml():
var pendingHtml = elements.map(function (elem) {
return elem.getInnerHtml();
});
Run Code Online (Sandbox Code Playgroud)
要等待它们被解析,您可以将集合传递给promise.all().
promise.all(pendingHtml).then(function (allHtml) {
// ...
});
Run Code Online (Sandbox Code Playgroud)
注意,你需要参考Selenium的promise.
var promise = require('selenium-webdriver').promise;
Run Code Online (Sandbox Code Playgroud)
联合:
// ...
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
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8673 次 |
| 最近记录: |