2

我正在研究 Selenium WebDriver。我需要将鼠标指向一个元素并单击它,我想在这里使用 javascript 而不是 Xpaths。

该元素的 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 选择器。尝试简单map[name="edit_1"]> area 但在尝试使用firebug执行anuthing验证之前(我使用firepath,ffox中的firebug插件)来验证您的css选择器是否正确。然后尝试执行我上面提到的代码。它总是有效的。

但也可以尝试另一种方法。如果您的 selenium 测试与使用 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 回答