<div>
<a href='...'>LINK</a>
<img class='image' />
</div>
<div>
...
</div>
img
クラスのimage
タグの分度器要素を取得したいと思います。リンクテキスト「LINK」はすでに知っています。つまり、「特定の要素の兄弟を見つけるにはどうすればよいですか?」.
コードの最初の行は次のようになります。
browser.findElement(by.linkText('LINK'))
何か案は?
ありがとう&乾杯
インスピレーションをありがとう。これが私の解決策であり、私が望んでいたものではありませんが、それは機能します:
element(by.css('???')).element(by.xpath('..')).element(by.css('???')).click();
チェーンと、親に戻ることができるby.xpathが、ソリューションの鍵です。
これは私が実際にページオブジェクトに実装するものです:
this.widgets['select-status'] = this.ids['select-status']
.element(by.xpath('following-sibling::div[1]'));
this.widgets['select-status.dropdown'] = element(by.css('.btn-group.bootstrap-select.open'));
このページは、Bootstrap with Bootstrap Select。とにかく、following-sibling
軸に沿ってDOMをトラバースします。XPATH仕様を参照してください。 。
Xpathセレクターを使用すると、要素検索メカニズムが遅くなるため、適切な選択ではありません。
私はこの特定の問題に対処するためのプラグインを設計しました: protractor-css-booster
プラグインは、より良い方法で、そして最も重要なことにCSSセレクターを使用して兄弟を見つけるためのいくつかの便利なロケーターを提供します。
このプラグインを使用すると、直接使用できます。
var elem = await element(by.cssContainingText('a','link text')).nextSibling();
elem.click(); //proceed with your work
または、これをバイロケーターとして使用します
var elem = element(by.cssContainingText('a','link text')).element(by.followingSibling('img'));
利用可能な他の便利な方法をいつでもチェックアウトできます ここ ...
これで、次のようなWeb要素を見つけることができます。
そして、あなたが使用して見つけることができるすべてのものを推測しますか???? CSSセレクター????
願わくば、それはあなたを助けるでしょう...