Selenium点击href为javascript的链接:void [0];

时间:2013-04-30 15:09:27

标签: java javascript selenium automation webdriver

我正在尝试查看单击链接时是否使用Selenium WebDriver with Java在页面上生成报告。

页面上有很多链接会发生什么,点击后大多数链接转到另一个页面,我自动填写详细信息并提交表单以检查报告是否生成。

但是,有三个报告在点击时会导致某些JS运行,几秒钟后,同一页面上会显示一个新链接以下载报告。

如何点击此链接?

我正在将页面上的所有链接读入WebElements列表,然后循环遍历它们,其中href包含javascript:to void [0];

然后我尝试在列表中的该元素上调用click方法,allLinks.get(i).click();

这与我为其他报告做的一样,它工作正常,但在这3个我得到一个错误 “元素目前不可见,因此可能无法与”

进行交互

如果我检查启动JS运行的链接,则使用firebug说:

<a onclick="requestReportGeneration('2cad4d4e5c8855c47a88b6ddf8345735', 'reportDiv33','CSV')" href="javascript:void[0];">CSV</a>

有人可以建议点击链接吗?

该页面包含许多说CSV的链接,因此我不能只使用链接文本。

更新 我刚想到这个可能会有所帮助。当我第一次来到带有报告链接的页面时,它会说“订单报告”我需要点击标题然后调用JS函数来扩展该部分并显示链接。

报告有效,因为当我来到这个页面时,我只是读取了页面源的所有href并执行了driver.get(reportList.get(i);所以我实际上并没有点击链接。

我添加了一个链接来获取标题的xpath并单击它然后当我尝试单击带有href或javascript的链接时:void我仍然收到一条错误消息,说它不可见。

2 个答案:

答案 0 :(得分:0)

检查此命令是否点击任何(实际上是第一次使用 javascript:void [0] )链接

driver.findElement(By.xpath("//a[contains(@href,\"javascript:void[0]\")]")).click();

如果是 - 那么迭代器

出错了

答案 1 :(得分:0)

对于包含href="javascript:"的锚标签,请使用本机javascript click()方法,如下所示:

WebElement wwwLink = ((FindsByCssSelector) webDriver)
                .findElementByCssSelector("table[id='initiatorsTable'] tbody tr:not([class^='empty']) td[class='first'] a");

JavascriptExecutor exec = (JavascriptExecutor) webDriver;
exec.executeScript("arguments[0].click()", wwwUrl);

//TODO: wait for action code ...