Selenium WebDriverを使用してブラウザとやりとりするNightwatch.jsを使ってWebアプリケーションをテストしています。私のアプリでは、アイテムの名前によってのみ区別される動的に作成されたリストがあり、名前は<input>
という値で表示されます。名前で商品を探す必要があります。文書構造のプロパティ値で要素を見つけよう
例HTML表現:
<div class="item">
<input> <!-- current value: "first" -->
</div>
<div class="item">
<input> <!-- current value: "second" -->
</div>
<div class="item">
<input> <!-- current value: "first" -->
</div>
私は値second
で入力を含むdiv.item
を見つける必要があります。 <input>
の値は、そのvalue
属性の値と異なる場合があり、そのvalue
性、の値によって決定されること
注。私の場合、DOMはReactによって操作されるので、入力はvalue
属性を全く持たないかもしれません。
Nightwatch(またはSelenium WebDriver API)でのプロパティの値で要素を見つける方法はありますか?
私はwebdriverをdocumentation上で見て、私が見る唯一の方法は、いくつかの重大な欠点を有しているexecutingカスタムJavaScriptコードは、(例えば表示されるように要素を待っているの独自の実装を必要とし、ナイトウォッチページオブジェクトと相互作用しない)です。私が見る限り、他のすべての方法はHTMLだけを見ることに関係しています(属性はで、の属性はではありません)。それは、属性値ではなく、プロパティ値で検索を実行して
だけinput[value=...]
のようなセレクタを使用して、完全に明確にすること(CSS)または//input[@value=...]
(XPathが)、ないソリューションです。
#/ api?view = webdriver.By.js)。 – alecxe
@alecxe興味深い情報ですが、Nightwatch/WebDriver [実行](https://github.com/SeleniumHQ/selenium/wiki/JsonWireProtocol#sessionsessionidexecute)と同じユーザビリティを持っているようです。 (引数と戻り値でWebElementsをDOMElementsとの間で双方向に変換することに注意してください。) – hon2a
ええ、カスタムJSを実行する以外の方法はありません。 – alecxe