0

私はSeleniumを初めて使用するので、その質問はばかげているかもしれませんが、解決できません...

画面に確実に表示されて表示される要素で、Selenium (Eclipse および Firefox および Chrome ドライバーを使用) で click() を作成しようとしていますが、メソッドをfalse適用すると返されます。isDisplayed()そのため、アクションを実行するには要素が表示されている必要があるという例外が発生します。

私はすべての親divをチェックしました(私は自分のページでiframeを使用していません)true. これが私がやろうとしていることのコードの小さな例です:

<div id=1><div id=2><div id=3><div id=4><img that i want to click on with selenium\></div></div></div></div>

セレンでimgをクリックしたいのですが、表示されていないように見えます。

  • 画像は非表示としてマークされています
  • div4 は非表示としてマークされています
  • div3 はセレンによって表示されるようにマークされています
  • div2 は非表示としてマークされています
  • すべての親 div として、div1 は表示済みとしてマークされます

しかし、画面の同じ div に画像やその他の要素が確実に表示されます。

その点で何か助けはありますか?ありがとう !

EDIT:JSを使用してこれらのプロパティ、特に表示されず、読み込み時に表示されないとマークされているdiv 3を変更しますが、いくつかのアクションの後、表示されます(表示され、表示されます)。

編集2:セレンによって表示されないとマークされた2つのdivのスタイルには、両方のスタイルがあることがわかりましたdisplay:block;(クロム開発ツールで見られます)。何か案は ?

Edit3 : コメントで指定されたリンクに基づいて、計算された div のスタイルを追加します:

  • div4 : 高さと幅がゼロではなく、表示はブロックに設定されています。最小幅と最小高さもあります。
  • div3 : 高さと幅がゼロではなく、表示もブロックに設定されています
  • div2 : 高さ 0、幅 0 以外、display:block があります。だからそれが問題かもしれません。
  • div1 : 高さが 0 で、幅が sero ではなく、表示パラメータがなく、overflow-x と y が非表示になっています。これはSeleniumによって表示されないとマークされていると思いました...

何か案は ?

4

1 に答える 1

0

私は簡単なトリックで問題を解決することができました:クリックによってトリガーされるはずのJs関数を呼び出します。

JavascriptExecutor js; 
if (driver instanceof JavascriptExecutor) {
    js = (JavascriptExecutor) driver;
} else {
    throw new Exception("  Webdriver do not manage JS");
}
js.executeScript("function()");

適切な別の解決策は、ロボットを使用してマウスを使用してこの画像をクリックすることです。もちろん、その座標がある場合(または計算できる場合):

Robot robot = new Robot();
robot.mouseMove(300, 300);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);

表示/非表示の問題の解決策は見つかりませんでしたが。楽しみ :)

于 2013-06-05T13:37:23.383 に答える