1
我想弄清楚WebDriverJs中的循環如何與承諾一起工作。如何通過webdriverjs元素循環,直到元素具有文本值
假設你有以下的html:
<div id="textelements">
<span onclick="spanClicked('Rock')">Rock</span>
<span onclick="spanClicked('Paper')">Paper</span>
<span onclick="spanClicked('Scissors')">Scissors</span>
</div>
使用WebDriverJs我想找到文本「剪刀」的跨度,並點擊它。
最簡單的事情就是確保源html有適當的標識符,但說不能改變,WebDriverJs代碼看起來像給上面的html什麼樣的。
我曾嘗試以下:
function clickElementWithText(driver, textValue) {
driver.findElements(webdriver.By.css('#textelements span')).then(function(spans) {
for (var i = 0; i < spans.length; i++) {
var matched = spans[i].getText().then(function(text) {
console.log('Text value is: ' + text);
return text === textValue;
});
console.log(matched);
if (matched === true) {
console.log('clicking!');
spans[i].click();
return;
}
}
});
}
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
driver.get('http://webdriverjsdemo.github.io/');
clickElementWithText(driver, 'Scissors');
的問題是,匹配不等於true
即使它應該已經被設置爲true,當被評價。
任何想法發生了什麼?
完美!所有不錯的選擇;謝謝。 –