我正在使用JavaScript编写selenium测试。
在我的测试中,我迭代了一系列输入元素,并希望为可见的输入填充一个值。
if (textInputs.length > 0) {
console.log('handling text input');
var i, textInputLen;
for (i = 0, textInputLen = textInputs.length; i < textInputLen; i++) {
(function (index) {
if (textInputs[index].isDisplayed()) {
textInputs[index].sendKeys("custom text box - " + textBoxes);
textBoxes++;
}
}(i))
}
}
我不断收到以下错误ElementNotVisibleError: element not visible
,因为它正在尝试填写未在DOM上显示的输入。为什么不起作用?我怎样才能让它发挥作用?
我尝试了一些而不是isDisplayed()
:
请告知
答案 0 :(得分:0)
方法.isDisplayed()
返回一个promise而不是显示的状态。使用then
获取已解析的结果:
element.isDisplayed().then(function(state){
console.log(state):
});
但更好的方法是使用webdriver.promise.filter
过滤元素列表:
var textInputs = driver.findElements(By.css("input[type=text]"));
webdriver.promise.filter(textInputs, function(element) {
return element.isDisplayed();
}).then(function(element) {
element.sendKeys("my text");
});