我正在研究Selenium WebDriver。 我需要将鼠标指向一个元素并执行单击它,我想在这里使用javascript而不是Xpath。
该元素的javascript不是方法,因此我可以直接触发它。 我很困惑如何创建一个javascript,以便自动执行时的方法应该转到该对象(我想仅使用其javascript指向该对象)并执行单击。
元素的javascript:
javascript:setParam(paramOrderNbr, '4');
go('survey_editing.jsp','actMoveItemUp);
请帮忙!
库马尔
答案 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>
标记中包含的任何内容。
见下图
因此,如果我们无法使用标准树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中找到你需要的元素是可能的。 希望我的回答有所帮助)