Selenium WebDriver(Java):JavascriptExecutor无法单击元素,而WebElement.click()运行良好

时间:2014-04-09 07:58:07

标签: java javascript selenium

如下面的代码所示,通过WebElement.click()方法单击元素可以正常工作,而JavascriptExecutor.executeScript失败(适用于大多数情况)。

WebElement e = driver.findElement(By.xpath("......."));//some kind of checkbox
e.click(); //works fine.
((JavascriptExecutor) aw.driver).executeScript("arguments[0].click();",e); 
//executes with no exception, but the element is not selected.

页面的源代码太复杂了,无法粘贴到此处,抱歉。
调试此问题的任何线索或提示?

元素的HTML代码,它是一个extjs风格的复选框:
<td class="x-grid3-hd x-grid3-cell x-grid3-td-checker x-grid3-cell-first " style="width: 20px;"> <div class="x-grid3-hd-inner x-grid3-hd-checker" id="ext-gen108" unselectable="on" _nodup="30805"> <div class="x-grid3-hd-checker" _nodup="30805" /> </div></td>

我尝试点击tdtd/divtd/div/div个元素,得到相同的结果:WebElement.click()有效,JavascriptExecutor.executeScript失败(没有例外,但是未选中该复选框。)

2 个答案:

答案 0 :(得分:1)

我不认为JavaScriptExecutor无法首先执行您的脚本,但看看脚本是否按预期工作。

尝试在“e.click();”处设置断点然后开始调试,然后尝试在浏览器控制台中运行你的脚本(在你的情况下是“arguments [0] .click();”,看看发生了什么。

如果您确认脚本是好的,那么尝试在您的executeScript上放置断点并确保代码行已成功运行。

答案 1 :(得分:0)

改为使用     document.evaluate() 对于JavaScript执行器方法。这样的事情:     executeScript(&#34; document.evaluate(\&#34;&#34;,document,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue.click()&#34;);