web-dev-qa-db-ja.com

AngularJS + Protractor値ではなくテキストに基づいてドロップダウンオプションを選択する方法

ドロップダウンボックスからの値ではなく、テキストでアイテムをクリックしたい。

私はこの素晴らしい投稿を見つけました: 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');
6
Liad Livnat

この関数は、選択ボックスの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

12
user448090

この質問は次のようになります。 ドロップダウン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();
      });
  }
};
23
PaulL

値でオプションを選択したい場合は、次を使用できます。

var select = element.one(by.model('selectData'));
select.$('[label="Option 1"]').click();
5
suvroc