我想使用webdriverio使用$$
或elements
命令来访问web元素。我知道他们返回了一些网页元素,但我面临艰难的时间访问它们,可能是因为我是webdriverio的新手。 我尝试下面的代码:
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'firefox',
},
};
var client = webdriverio.remote(options);
client
.init()
.url(some url)
.isExisting(selector).then(function(isExisting)) {
if(isExisting) {
var bText = this.$$('textarea[name="message_text]') // this code onwards it is not working
bText.then(function (res) {
console.log(res.length);
console.log(res);
res.value.forEach(function (elem) {
return this.click(elem.ELEMENT)
.setValue(elem.ELEMENT,'some text')
.keys('Enter')
})
})
在上面的代码中,我可以看到在控制台中的阵列res
但forEach
循环似乎并没有工作。我想为this.$$('textarea[name="message_text"]')
中的每个元素执行click, setValue and keys('Enter')
也无法理解为什么返回的元素是JSON对象的形式? 如果任何人都可以引导我在正确的方向,这将有助于!
你尝试和阅读文档?因为他们解释了为什么 – zerohero
我读得非常广泛,但我无法访问forEach循环中的元素 –
您不能像这样在foreach循环中执行任何命令。在独立模式下,所有命令都是异步执行的。您需要确保正确处理由命令返回的所有承诺。使用wdio testrunner可以更轻松地执行命令,因为命令是同步执行的。 – ChristianB