3

テストする必要がある角度のあるフォームがあり、テキストノードのコンテンツを介して、ID のないアイテムを選択したいと考えています。他のプラットフォームの jquery と selenium では、:contains() と呼ばれる特別な css セレクターを使用して、何かを見つけることができました。

ptor.findElement(protractor.By.css('label:contains(\'some text\') > input')).getAttribute('value').then(function (value) {
    expect(value).toContain('myExpectedValue');
});

これを実行すると、無効な文字列に関する字句エラーが発生します。文字列内の引用符をエスケープするさまざまな方法を試しました。また、引用符を導入した後に同じことを行ったxpath式も試しました。それは次のように見えました:

ptor.findElement(protractor.By.xpath('//label[text()="some text"]/descendant::input[1])')).getAttribute('value').then(function (value) {
    expect(value).toContain('myExpectedValue');
});

それは同じように失敗しました。

1: :contains selenium 関数は分度器で使用できますか?
2: 文字列を間違ってエスケープしていませんか?

オブジェクトに ID を添付するように言わないでください。マークアップの変更は許可されていません。

4

1 に答える 1

12
  1. :contains は CSS3 仕様の一部ではないため、protractor.By.css ロケーターで :contains を使用することはできません (こちらを参照) 。

  2. xpath の何が問題なのかはわかりませんが、エスケープではありません。分度器でそのようなxp​​ath文字列を使用しました。

アップデート:

「:contains」セレクターの欠如に対応して、この目的のために新しいロケーターが作成されました。

例: By.cssContainingText('ul .pet', 'Dog') は、テキスト 'Dog' を含むクラス 'pet' を持つすべての ul 子を検索します。詳しくはこちら

注:古いバージョンの分度器にはこのセレクターがないため、更新が必要になる場合があります。

于 2013-10-10T21:05:07.757 に答える