2

私は、primefaces というライブラリを使用して jsf ベースのアプリケーションを開発しています。Primefaces は、いくつかのボタンを生成する JavaScript 関数を含む Web ページを生成します。ボタンはページのソース コード (< ボタン>...< /ボタン> など) に表示されないため、Watir はこれらをクリックして何かをテストすることはできません。

私の質問は次のとおりです。Watir を使用して JavaScript 関数によって生成されたボタンの ID またはクラスを回復することは可能ですか?

ありがとう

4

1 に答える 1

0

実際には、使用sleep推奨されません。ブラウザーと JavaScript コードがアクションを実行するのにかかる時間によっては、競合状態に陥り、時々しか機能しないテストになる可能性があります。

スリープの使用を検討している場合は、代わりに wait_until を使用してください。実際に使用する必要がある場合に、タイミングの問題に対するテスト コードの回復力が高まります。

@JustinKo が推奨するように、おそらく Watir の待機メソッドを使用して、要素がページに表示されるまで待機する必要があります。

あなたの場合、次の例のようなものを試してみてください:

# Assuming your browser object is named: $b
#Ex: $b = Watir::Browser.new :chrome
$b.button(:id => 'my_button').wait_until_present
Watir::Waiter::wait_until { $b.button(:id => 'my_button').visible? }

ページで要素が見つからない場合は、FireBug のソース コードまたは Chrome の開発者ツール コンソール ( Shift+Ctrl+I) を参照してください。idそのボタンの識別属性、または、classnameまたはその他の識別属性を持つコンテナ要素を見つけてみてください。

ただし、現時点では、JavaScript によって要素が生成されたか、DOM に追加されたかを検出する方法があるかどうかはわかりません。

于 2013-02-21T00:02:51.833 に答える