18

分度器を使用して選択要素のオプション値を取得しようとしています。ただし、オプション要素が見つかりません。

HTML

<select ng-options="opions.c as options.n for option in options" ng-model="model">
    <option value="0">Option 1</option>
    <option value="1">Option 2</option>
</select>

仕様ファイル

describe('testing select option', function() {
    it('', function() {
        ptor = protractor.getInstance();

        //This will not get the option required
        ptor.findElement(protractor.By.binding('model'));
    });
});

オプション値を取得する方法を見つけられないようです。使用できる関数が見つからず、例外またはエラー メッセージが表示されないためです。

この問題を解決する方法を知っている人はいますか?

4

6 に答える 6

36

ドロップダウンをうまく機能させるのにいくつか問題があり、今日はそれを解決するのに時間を費やしました(したがって、他の誰かが役に立つと思った場合に備えて、ここで共有しています).

分度器の以前のバージョンには、by.selectedOption がありました。これは、実質的に by.select と同じことを行いますが、選択されたアイテムのみを返します。したがって、上記の選択されたオプションのテキストを取得するには、次のようにすることができます。

expect(element(by.selectedOption('model')).getText()).toEqual('Option 1');

詳細が必要な場合は、ブログ投稿を書きました。ドロップダウンでオプションを選択するためのヘルパー関数もカバーしています: http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/

分度器の最近のバージョンでは、この機能が削除され、次のように置き換えられました。

expect(element(by.id('my_id')).element(by.css('option:checked')).getText();

これはどのファインダーにも適用できるため、より柔軟ですが、selectedOption はモデル ファインダーでのみ機能します。

于 2013-12-01T03:01:02.953 に答える
0

xPath を使用してみてください。

ptor.findElement(protractor.By.xpath('//select/option[1]'));

同じ手法を使用して、オプションを値で選択できます。

protractor.By.xpath('//select/option[text()="Option 2"]'));

選択したドロップダウンに基づいて入力が表示されるフォームを設定するために、これを行う必要がありました。

makeFord = protractor.By.xpath('//select[@id="make"]/option[text()="Ford"]'));
modelMustang = protractor.By.xpath('//select[@id="model"]/option[text()="Mustang"]'));
makeFord.click();
modelMustang.click();
于 2014-01-13T15:24:37.217 に答える
-1

オプション タグを列挙するには、メソッドを使用してみてください.all。最初に親からアクセスする必要があります。

element(by.model('model')).all(by.tagName('option')).then(function(arr) {
        expect(arr.length).toEqual(2);
});

インスピレーションについては、API リファレンスをご覧ください。

http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.all

編集:XPath http://www.protractortest.org/#/style-guideの使用を妨げるスタイルガイドにも従ってください

于 2016-07-30T22:10:28.157 に答える