【发布时间】:2014-05-18 16:25:41
【问题描述】:
我想通过文本而不是下拉框中的值单击项目。
我发现了这篇很棒的帖子:https://coderwall.com/p/tjx5zg,但它没有按预期工作,找到匹配后搜索将永远继续并且它没有点击该项目,
如果有人有更好的例子(一个有效的例子)或者可以修复这个代码并让它工作,
我会明白的。
这是所用帖子中 Dan Haller 的代码(保留所有权利)
function selectOption(selector, item){
var selectList, desiredOption;
selectList = this.findElement(selector);
selectList.click();
selectList.findElements(protractor.By.tagName('option'))
.then(function findMatchingOption(options){
options.some(function(option){
option.getText().then(function doesOptionMatch(text){
if (item === text){
desiredOption = option;
return true;
}
});
});
})
.then(function clickOption(){
if (desiredOption){
desiredOption.click();
}
});
}
这是一个选择项功能,我可以这样使用:
var browser = protractor.getInstance();
browser.selectOption = selectOption.bind(browser);
browser.selectOption(protractor.By.id('my-dropdown'), 'My Value');
【问题讨论】:
-
我也试过“protractor.By.xpath('select option[text()="Option 2"]'));”它没有工作
-
我通常使用
sendKeys(),我不确定这是否需要。例如,如果我有一个包含城市名称列表的下拉菜单,我会使用elem.sendKeys(desiredCityName),它会自动选择正确的选项。
标签: angularjs protractor