如下面的代码所示,通过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>
我尝试点击td
,td/div
,td/div/div
个元素,得到相同的结果:WebElement.click()
有效,JavascriptExecutor.executeScript
失败(没有例外,但是未选中该复选框。)
答案 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;);