1

私のpage.rbではdiv(:select, :css => 'div.active[style="display: block;"]')、エラーが発生しているものを使用しています-Watir :: Exception::MissingWayOfFindingObjectException。

コンソールでdocument.querySelector("div.active[style='display: block;']")、オブジェクトを適切に返します。ドキュメントのどこを見ればよいかわからないので、助けていただければ幸いです。

前もって感謝します。

4

1 に答える 1

1

ページオブジェクトgemコードからわかる限り、ページオブジェクトgemがwatir-webdriverの:cssロケーターをサポートしているとは思いません。少なくとも、watir_findersメソッドには含まれていません。element.rbおよびdiv.rbを参照ください。その理由は、:cssロケーターはelementメソッドを使用する場合にのみ使用できるというwatir-webdriverの現在の制限によるものだと推測しています。watir-webdriverの問題124を参照してください。

解決策1-ブロックを使用する

ただし、ページオブジェクトのdivをブロックで定義することにより、これらの問題を回避できます。

htmlを想定すると:

<div class="active" style='display: block;'>text</div>

以下は私のために働いた:

div(:select){ browser.element(:css => 'div.active[style="display: block;"]') }

解決策2-Xpathを使用する

または、cssロケーターをxpathロケーターに変換することもできます。

div(:select2, :xpath => '//div[@class="active" and @style="display: block;"]')

このようにすると、クラスでより堅牢なロケーターを使用することについて説明しているこの別の質問を確認することをお勧めします。

于 2013-01-22T17:55:18.350 に答える