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

f45qwnt8  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(292)

我试图看看当一个链接被点击时,是否会在页面上使用Selenium WebDriver和Java生成一个报告。
发生的事情是在一个页面上有一堆链接,其中大多数当点击转到另一个页面,我已经自动填写详细信息和提交表格,以检查报告是否生成。
但是,有三个报告,当点击导致一些JS运行,几秒钟后,一个新的链接显示在同一页面上下载报告。
我如何点击此链接?
我将页面上的所有链接读入一个WebElement列表,然后循环遍历它们,查找href包含javascript的位置:作废[0];
然后我尝试调用列表中该元素的click方法allLinks.get(i).click();
这与我对其他报告所做的事情相同,它工作正常,但在这3个报告上,我得到一个错误“元素当前不可见,因此可能无法交互”
如果我使用firebug检查启动JS运行的链接,它会说:

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

有人能建议一个点击链接的方法吗?
该页面包含大量的链接说CSV,所以我不能只使用链接文本。

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

报告的工作,因为当我来到这个页面,我只是阅读所有的页面源代码的href和做driver.get(reportList.get(i);所以我并没有点击链接。
我已经添加了一个链接来获取标题的xpath并单击它,但当我尝试单击带有href或javascript的链接时:void我仍然收到一个错误消息,说它不可见。

rggaifut

rggaifut1#

检查此命令是否单击任何链接(实际上是第一个,带有 javascript:void[0]

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

如果是-则迭代器有问题

vyswwuz2

vyswwuz22#

对于包含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 ...

相关问题