执行单击元素

时间:2012-09-04 04:10:26

标签: javascript selenium

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

该元素的javascript不是方法,因此我可以直接触发它。 我很困惑如何创建一个javascript,以便自动执行时的方法应该转到该对象(我想仅使用其javascript指向该对象)并执行单击。

元素的javascript:

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

请帮忙!

库马尔

3 个答案:

答案 0 :(得分: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());

希望这对你有用

答案 1 :(得分:0)

干得好。 但是尝试修改你的css选择器的lil位。 试试map[name="edit_1"]> area 但在你尝试执行anuthing 使用firebug进行验证之前(我在ffox中使用firepath,firebug addon)来验证你的css选择器是否正确。 然后尝试执行上面提到的代码。它总能奏效。

但也有可能尝试另一种方法。如果您的selenium测试与指向web元素的onmousehover动作处理相关联。 然后可以使用用户操作构建器:

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();

请在检查此信息后立即通知。

答案 2 :(得分:0)

我对你的问题进行了一些调查。而现在我有点沮丧。 Firebug无法找到<script>标记中包含的任何内容。 见下图 enter image description here

因此,如果我们无法使用标准树DOM模型定位元素,那么就会留下最后的假设(在我看来)。如果碰到你的问题,我只会分享我会实施的想法。只需尝试使用js点击固定坐标。但这被认为是不好的方法。解释here 因此,返回到js定位坐标点击即可使用this 使用描述的部分,我们找到我们需要定位的元素的x,y坐标。并使用this 你可以实际执行点击。 这样的事情:

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());

顺便说一下,您可以了解高级用户操作here。在某些情况下,我发现它非常有用。

但在我看来,不管怎么说,在DOM中找到你需要的元素是可能的。 希望我的回答有所帮助)