ドロップダウンボックスからの値ではなく、テキストでアイテムをクリックしたい。
私はこの素晴らしい投稿を見つけました: https://coderwall.com/p/tjx5zg しかし、それは期待どおりに機能しません。一致が見つかった後、検索は永久に続行され、アイテムをクリックしません。
誰かがより良い例(機能しているもの)を持っているか、このコードを修正して機能させることができる場合は、
私はapperciateします。
これは、使用された投稿のコード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');
この関数は、選択ボックスの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
この質問は次のようになります。 ドロップダウンprotractorjs e2eテストでオプションを選択する方法
最近のバージョンの分度器を使用している限り、次のことができます。
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();
});
}
};
値でオプションを選択したい場合は、次を使用できます。
var select = element.one(by.model('selectData'));
select.$('[label="Option 1"]').click();