我试图点击链接并遇到困难。相关的HTML代码是:
<div id="adHocAddDocDiv" style="display: block;">
<a href="javascript:hideDiv();" style="color:#000">
Close window
</a>
<table border="0">
<tbody></tbody>
</table>
</div>
对于代码,我有:
driver.findElement(By.xpath("//*[@id='adHocAddDocDiv']/a")).click();
这确实找到了正确的元素,但是如果我手动点击链接,它似乎不会执行JavaScript来关闭发生的窗口。有什么想法吗?
更新:这是最终有效的代码:
WebElement element = driver.findElement(By.xpath("//[@id='adHocAddDocDiv']/a"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
答案 0 :(得分:3)
我经常遇到WebDriver似乎无法点击的元素。在这些情况下,我使用以下模式:
var js = (IJavaScriptExecutor)driver;
js.ExecuteScript("$j(\"div[id='adHocAddDocDiv']\").click();");
这是C#版本。我确信Java表单非常相似。
答案 1 :(得分:1)
尝试更明确:
driver.findElement(By.linkText("Close window")).click();
答案 2 :(得分:0)
我的猜测是,在该div之后会有更多<a>
,并且它不够独特。试试这个:
driver.findElement(By.cssSelector("div#adHocAddDocDiv > a[href*='hideDiv()']")).click()