2012-04-20 18 views
1

私はSelenium WebDriverを使用しており、Webページからいくつかのjavascriptを実行したいと考えています。私はページ上のオブジェクトからjavascriptを呼び出さなければならないときに苦労しているように見えますが、javascriptを実行する上でかなりの数の(非常に便利な)ポストを見つけて、いくつかの成功を収めました(私はこれに慣れています。オフ?)。以下は、私が電話をかけたいページではJavaScriptです:Selenium WebDriverで '.hover' Javascriptを実行

$j(".webGrid tr").hover(function() { 
     $j(this).find("#imgEdit").css("visibility", "visible"); 
} 

そして私は現在、私の最も近い二つの試みであることを感じて:

js.ExecuteScript("('.itemId').find('#imgEdit').css('visibility', 'visible')"); //1 
js.ExecuteScript("(arguments[0]).find('#imgEdit').css('visibility', 'visible')", element); //2 

は、誰も私に私が間違っているつもりですどこのアイデアを与えることができます?最初のケースでは、私は".itemId"を取得しています.findは関数ではありませんと2番目の引数[0] .findは関数ではありません。私は「発見」が潜在的に問題であると思うが、それはページのjavascriptファイルにあるので、私の理解に何か間違っている。

答えて

3

間接的な回答ですが、エレメント上でマウスを動かすためにActionBuilderを使用するだけではどうですか?

Actions builder = new Actions(driver);

builder.moveToElement(someElement);

builder.build().perform();

より直接的な回答... findは、javascriptライブラリの関数でなければならず、デフォルトでブラウザから利用できるものでなければなりません。このようなことをした場合:

return ((IJavaScriptExecutor)webDriverInstance).ExecuteScript("return arguments[0].innerHTML", elementInstance).ToString(); innerHTMLプロパティは任意のjavascript要素オブジェクトから利用できるため、これは機能します。

+0

まず、間接的な回答をいただき、ありがとうございます。アクションが正しいjscriptレスポンスを発射しないように見えるケースが増えています(しかし、あなたはアクションでそれを行うようにすべきです)。 2番目の答えは役に立ちましたが、別の質問が出ました。隠されたimg(または隠れたimgを保持しているdiv)を見つけて、不可視から見えるように可視性を設定するにはどうすればいいですか?おそらくもっとコードを追加すべきでしょうか? – Nashibukasan

+1

それはちょうど真っ直ぐなjavascriptになります。要素オブジェクトが "arguments [0]"の場合、javascriptを使用してhtmlタグの属性を変更する必要があります。要素を非表示にするにはいくつかの方法があります。そのため、表示するには何をする必要があるかを知る必要があります。最も単純な場合、javascriptは "arguments [0] .setAttribute(" style "、" display:block ")"または "arguments [0] .setAttribute(" style "、" visibility:visible ")"のようになります。別の例として、要素のクラスを、その要素を表示するクラスに変更する必要がある場合があります。 –

+0

ありがとうございました、それは今私にとってもっと意味があります。私は今、別の問題を抱えています。私が見せたい要素は、上に浮かぶまで隠されています!私はアクションを使用してこれを解決しました(私はホバーコールを強制するコンテナにカーソルを移動する)ので、私はそれを使用しますが、代わりにjsを使ってやりたいと思っています!乾杯。 – Nashibukasan

関連する問題