我想使用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