2017-07-29 23 views
1

我想学习webdriverio。 我试着运行这段代码:WebdriverIO:如何正确迭代throus元素并注销getText?

client.init(). 
url('https://www.example.com'). 
elements('p').then((result) => { 
    for (i = 0; i < result.value.length; i++) { 
     (client.elementIdText(result.value[i])). 
     then((re) => console.log(re)) 
    } 
}) 

但是没有注销任何东西。

我知道我可以使用getText('p')来做到这一点,但只是想知道如何使用元素('p')来做到这一点。

+0

'元素( 'P')。value.forEach((元件)=> {返回的console.log(browser.elementIdText(element.ELEMENT)。价值)})'将做招。 – tehbeardedone

回答

2

希望这个提示将帮助你找到你的答案:

let totalElements = $$('p').map((result) => { 
    return result.getText(); 
}); 
console.log(totalElements); 

或者此选项

$$('p').forEach(function(result){ 
    console.log(result.getText()); 
}); 

注:$$ Link

,并得到它从你的代码中完成,请做相同$$,删除.value并将方法更改为getText()。由于elementIdText()只会将选择器ID作为参数,因此没有任何返回。而<p>不是一个ID。参阅此处elmentIdText()

for(i=0; i<result.length; i++){ 
    (client.getText(result[i])). 
    then((re) => console.log(re)) 
} 
+0

是不是元素('p')。value.map((result)=> {0}返回result.getText(); });'?否则,你会得到'TypeError:browser.elements(...)。map不是函数'。 – tehbeardedone

+0

感谢您的发现。关于代码只是一个暗示迭代。由于'elements'将返回一个对象数组,然后需要执行'.value'来检索它。于是用'$$'替换了''''元素'',它只是返回一个正常的数组 –