2012-01-11 4 views
2

私は、webdriverを使用して、私が取り組んでいるプロジェクト用の自動テストスクリプトを作成しています。私のスクリプトの1つの間に、支払いが処理されている間、ページに「希望の輪」が表示されます。他のすべての要素がページに表示されますが、回転ホイールは常にフォーカスをとります。したがって、私はページ上のどの要素もクリック/対話できません。ウェブ要素がインターフェアリングできることを確認する

一般に、要素をクリックする前に、ページ上にあることを確認します。私の問題は ですが、その要素はページ上にありますが、フォーカスを取るホイールのためにクリックできません。要素がアクティブな要素にフォーカスを当てることを確認する方法はありますか?それ以外の場合は、明示的な待機を使用して私はjqueryの暗黙の待機のための私の待機が機能していないように見えます。

すべてのアイデアを歓迎します。

おかげで、 ジェームズ

私の1つの考えは、要素に焦点を当てるjqueryのを使用して、その要素が注目された後にのみ、次のアクションを開始することです。これに制限があるかどうか誰にも分かりますか?

arguments[0].focus(); 
if(document.activeElement==arguments[0]){ 
    return true; 
} 
else{ 
    return false 
} 

(引数は[0]私はをクリックし、希望のホイールの後ろwebelementです):

私はその後、フォーカスを検証要素を集中するために、次を使用しようとしました。残念ながら、ホイールがまだ回転している間に真を返し、フォーカスを取り去ってしまいます。

+0

JavaScriptは本質的に非常に非同期なので、ここで何が起きているのか少し混乱しています。リンクやコードを教えてください。 UIのロックを避けるために、より小さなメソッドに分割する必要のある厄介なコードがあるかもしれません。 –

+0

あなたは希望のブロックコード/ホイールについて話していますか?もしそうなら、私は自分自身では見えないので、そのコードを提供することはできません。私はテストが実行されているときに私の画面上に大きなホイールが表示されます。私はそれが完了するまで私が何もしないことを確認しようとしています – James

+0

私は、要素をフォーカスし、次にフォーカスを確認するために次のようにしました:arguments [0] .focus(); if(document.activeElement == arguments [0]){return true;} else {return false}(arguments [0]は、クリックしたい希望のホイールの背後にあるweb要素です)。残念ながら、ホイールがまだ回転している間に、それは本当のことを返します。 – James

答えて

2

この「希望の輪」はページ全体を覆うマスキング要素であると仮定すると、隠すか、 DOMを使用する前に(基本的には手動で行う)

+0

いいアイデア、私は誰かが私が他の要素に焦点を当てることができるかどうかを決定するjavascriptの方法を持っていることを望んでいますが、私はこれがはるかに良いと思う暗黙の待ちよりも物事を行う方法であり、答えとしてマークします。ありがとう – James