gpt4 book ai didi

node.js - 将 Selenium 的 findElements 中的 Promise 数组转换为对象数组

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:12 25 4
gpt4 key购买 nike

我正在使用 Selenium 和 node.js 我正在尝试执行以下操作

var driver   = *webdriver instance*;
var my_xpath = *an xpath string*;
var ele;

Q.all(driver.findElements(webdriver.By.xpath(my_xpath))).then(function(elements) {
for (ele in elements) {
console.log(ele.getText());
};
}

我的印象是 Q.all 会将 driver.findElements 返回的 promise 数组转换为值数组,以便当我输出 ele.getText() 这将是一个值。然而在这种情况下,ele 仍然是一个 promise 。

我在这里缺少什么?

请注意,我意识到对于上面的示例来说这是不必要的,我可以简单地使用 ele.getText().then,但我的实际程序需要在继续之前拥有所有值。

最佳答案

无需使用 all 聚合 Promise,因为 findElements 返回单个 Promise。您还需要使用 for 循环而不是 for-in 循环来迭代已解析的数组:

driver.findElements(webdriver.By.xpath(my_xpath)).then(function(elements) {
for (var i = 0; i < elements.length; i++) {
elements[i].getText().then(function(text) {
console.log(text);
})
};
});

您还可以使用 map 直接获取包含每个元素文本的数组:

var map = webdriver.promise.map;

var elements = driver.findElements(By.xpath(my_xpath));

map(elements, e => e.getText()).then(function(texts) {
console.log(texts);
});

关于node.js - 将 Selenium 的 findElements 中的 Promise 数组转换为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38146870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com