帮我解决这个问题。我必须从下面的下拉列表中选择值是我的定位器。我已经尝试过Css,XPath和Repeater来选择值。 CSS和Xpath显示“找不到元素”。使用Repeater时,它不会显示任何错误,也不会在下拉列表中选择值。还有什么我需要解释的。超时问题正在发生
flatMap
答案 0 :(得分:1)
您可能应该尝试等待选项下拉列表中的加载选项。下面的代码应该适用于您在代码中提供的唯一option
元素 -
var elem = $('.form-control');
var optionsToSelect = elem.element(by.repeater('p in peripheral'));
elem.click().then(function(){
browser.waitForAngular().then(function(){
browser.wait(protractor.ExpectedConditions.visibilityOf(optionsToSelect),10000)
.then(function(){
optionsToSelect.click();
});
});
});
如果上面的代码仍未单击下拉元素,则在单击options元素后尝试发送enter命令。这是如何 -
browser.actions().sendKeys( protractor.Key.ENTER ).perform();
同样,您可以使用元素定位器选择所需的任何选项。您需要做的就是用您的选项定位器替换var optionsToSelect = elem.element(by.repeater('p in peripheral'));
。
如果您在下拉列表中有多个选项,并且如果要在系列中选择所有选项,则可以通过迭代元素来完成。这是如何 -
var elem = $('.form-control');
var optionsToSelect = elem.element.all(by.repeater('p in peripheral')); //get all options with the repeater
optionsToSelect.each(function(eachOption){
eachOption.click().then(function(){
//Perform any operation that you want after clicking each option
browser.sleep(1000);
});
});
希望它有所帮助。