2

私はSelenium WebDriverに取り組んでいます。マウスを要素に向けてクリックする必要があり、ここでは Xpath の代わりに JavaScript を使用したいと考えています。

その要素の JavaScript はメソッドではないので、直接起動できます。メソッドが自動実行されたときにそのオブジェクトに移動し (javascript のみを使用してそのオブジェクトをポイントしたい)、クリックを実行するように javascript を作成する方法がわかりません。

要素の JavaScript:

javascript:setParam(paramOrderNbr, '4');
go('survey_editing.jsp','actMoveItemUp);

助けてください!

クマール

4

3 に答える 3

1

これを試して:

String cssSelector =.... //css selector of the element you want click on
JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSelector+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

これがあなたのために働くことを願っています

于 2012-09-04T15:51:15.473 に答える
0

よくできた。しかし、cssセレクターを少し変更してみてください。簡単に試してみてくださいしかし、firebugでanuthing verifymap[name="edit_1"]> area を実行する前に(私はfirepath、ffoxのfirebugアドオンを使用します)、cssセレクターが正しいことを確認します。次に、上記のコードを実行してみてください。それは常に機能します。

しかし、別のアプローチを試すことも可能です。セレンテストが、onmousehoverアクション処理でWeb要素を指摘することに関連している場合。次に、ユーザーアクションビルダーが可能です。

WebElement mnuElement;
WebElement submnuElement;
mnEle = driver.findElement(By.Id("mnEle")).click();
sbEle = driver.findElement(By.Id("sbEle")).click();

Actions builder = new Actions(driver);
// Move cursor to the Main Menu Element
builder.moveToElement(mnEle).perform();
// Giving 5 Secs for submenu to be displayed
Thread.sleep(5000L);
// Clicking on the Hidden SubMenu
driver.findElement(By.Id("sbEle")).click();

これを確認したらすぐに知らせてください。

于 2012-09-10T11:13:28.840 に答える
0

私はあなたの問題について少し調査しました。そして今、私は少しイライラしています。Firebug は、<script>タグに含まれるものを見つけることができません。下の写真を見てください ここに画像の説明を入力

したがって、標準のツリー DOM モデルを使用して要素を見つけることができない場合は、最後の仮定が残されます (私の意見では)。問題に遭遇した場合に実装するアイデアのみを共有します。js を使用して固定座標をクリックしてみてください。しかし、これは悪いアプローチと見なされます。ここで説明されている ので、jsの位置座標に戻ってクリックすると、これ を使用できます 記述された部分を使用して、位置を特定する必要がある要素のx、y座標を特定します。これを使用して 、実際にクリックを実行できます。そんな感じ:

JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("x.trigger("click", [x, y]);"); //where [x,y] you've already //obtained
        js.executeScript(stringBuilder.toString());

ちなみに、高度なユーザー アクションについては、こちらを参照してください。場合によっては非常に役立つと思います。

しかし、どうにかして必要な要素をDOMで見つけることができるように思えます。私の答えが何らかの形で役立つことを願っています)

于 2012-09-11T16:00:41.090 に答える