1

我正在使用 Selenium WebDriver 并想从网页执行一些 javascript。我发现了一些关于执行 javascript 的(非常有用的)帖子并取得了一些成功,尽管当我必须从页面上的对象调用 javascript 时我似乎很挣扎(我是新手,所以我的术语和基本理解可能是离开?)。以下是我要调用的页面上的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 is not a function而在第二个arguments[0].find is not a function中。我看到“查找”可能是问题所在,但它在页面 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 回答