webdriverioを使用して$$
またはelements
コマンドを使用してWeb要素にアクセスしたいとします。私は彼らがWeb要素の配列を返すことを知っていますが、おそらく私はwebdriverioが初めてであるため、それらにアクセスするのに苦労しています。 Iは、以下のコードを試みた:
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