gpt4 book ai didi

javascript - 使用 Protractor 获取所有元素的 id

转载 作者:行者123 更新时间:2023-12-01 01:56:19 26 4
gpt4 key购买 nike

页面中有 5 个 iframe 元素,我正在尝试使用 Protractor 查找所有 5 个元素的 id。

什么是正确的方法

element.all(by.tagName('iframe')).then(function(arr) {
console.log("lenthg" ,arr.length) //prints 5
arr.forEach(function(arr1) {
console.log("arr1", arr1.getAttribute('id'))
});
});

此代码不给出 ids,仅打印元素对象。

最佳答案

您获得了元素对象,因为函数 getAttribute 返回了一个 Promise(请参阅 here )。

因此您有多种可能性来获取您的 ID。

<强>1。选项

您可以在 then 方法中打印 id。

element.all(by.tagName('iframe')).then(function(arr) {
console.log("lenthg" ,arr.length) //prints 5
arr.forEach(function(arr1) {
arr1.getAttribute('id').then(function(id) {
console.log("arr1", id);
});
});
});

<强>2。选项

您可以等待所有 5 个 Promise 全部解决,然后再处理 ids。

element.all(by.tagName('iframe')).then(function(arr) {
console.log("lenthg" ,arr.length) //prints 5

let idPromises = arr.map(function(arr1) {
return arr1.getAttribute('id');
});

Promise.all(idPromises).then(function(ids) {
ids.forEach(function(id) {
console.log(id);
});
});

});

<强>3。选项

您可以使用asyncawait来编写同步代码。

it('Your Test Name', async function() {

...

let arr = await element.all(by.tagName('iframe'));
console.log('lenth', arr.length) //prints 5

for (let i = 0; i < arr.length; i++) {
let id = await arr[i].getAttribute('id');
console.log("arr1", id);
};

})

关于javascript - 使用 Protractor 获取所有元素的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51012909/

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