Javascript Webdriver.io元素的使用
我想迭代元素并对所有元素执行一些操作,例如设置值等。现在我有以下代码,但我甚至无法从所选元素获取属性Javascript Webdriver.io元素的使用,javascript,selenium,webdriver,webdriver-io,Javascript,Selenium,Webdriver,Webdriver Io,我想迭代元素并对所有元素执行一些操作,例如设置值等。现在我有以下代码,但我甚至无法从所选元素获取属性 client.elements("freeforms-widget").then(function (elems) { for (let elem of elems.value) { let k = client.elementIdAttribute(elem.ELEMENT,'name'); console.log(
client.elements("freeforms-widget").then(function (elems) {
for (let elem of elems.value) {
let k = client.elementIdAttribute(elem.ELEMENT,'name');
console.log(k);
}
})
我所看到的是:
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
元素本身似乎很好
{ state: 'success',
sessionId: 'dd301839-369a-45a2-a38c-4bb8ce0a439b',
hCode: 1204992695,
value:
[ { ELEMENT: '0' },
{ ELEMENT: '1' },
{ ELEMENT: '2' },
{ ELEMENT: '3' },
{ ELEMENT: '4' },
....
我做错了什么以及如何修复它?elementIdAttribute()
返回一个承诺-{state:'pending'}
是未解析的挂起承诺的字符串表示形式。要在控制台上打印真实值,您需要解决承诺:
client.elementIdAttribute(elem.ELEMENT,'name').then(function (k) {
console.log(k);
});
虽然这样做有效,但并不理想。这意味着在比较元素时,我们必须编写包含大量回调的代码。