硒并点击" a"用href = javascript

时间:2014-06-19 17:37:02

标签: selenium xpath selenium-webdriver

我试图点击链接并遇到困难。相关的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);

3 个答案:

答案 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()