1

私は Selenium WebDriver を使用しており、Web ページから JavaScript を実行したいと考えています。JavaScript の実行に関するかなりの数の (非常に有用な) 投稿を見つけて、いくつかの成功を収めましたが、ページ上のオブジェクトから JavaScript を呼び出さなければならないときに苦労しているようです (私はこれに慣れていないので、私の用語と基本的な理解はオフ?)。以下は、呼び出したいページのJavaScriptです。

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

そして、現在、私の最も近い試みは次の2つだと感じています。

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ファイルにあるため、理解に問題があります。

4

1 に答える 1

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 要素オブジェクトから使用できるため、これは機能します。

于 2012-04-20T05:21:56.787 に答える