我想点击文章的文字,而不是点击下拉框中的值。
我找到了这篇很棒的帖子: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');
答案 0 :(得分:23)
此问题类似于:How to select option in drop down protractorjs e2e tests
只要您使用最新版本的量角器,您就可以这样做:
element(by.cssContainingText('option', 'BeaverBox Testing')).click();
如果您想按号码点击,可以执行以下操作:
var selectDropdownbyNum = function ( element, optionNum ) {
if (optionNum){
var options = element.findElements(by.tagName('option'))
.then(function(options){
options[optionNum].click();
});
}
};
答案 1 :(得分:12)
此功能选择选择框的第3个选项。
function selectDropdownByNumber(element, index, milliseconds) {
element.findElements(by.tagName('option'))
.then(function(options) {
options[index].click();
});
if (typeof milliseconds !== 'undefined') {
browser.sleep(milliseconds);
}
}
var mySelect = $('#my-dropdown');
selectDropdownByNumber(mySelect, 2);
可在此处找到更多信息 - http://qainsight.blogspot.fr/2014/04/select-dropdown-value-in-protractor-js.html
答案 2 :(得分:5)
如果您想按值选择选项,可以使用:
var select = element.one(by.model('selectData'));
select.$('[label="Option 1"]').click();