我正在尝试查看当单击一个链接时,是否会使用Selenium WebDriver在页面上生成一个报告。
发生的事情是在一个页面上有一堆链接,当单击它们时,它们中的大多数都会转到另一个页面,在那里我会自动填写详细信息并提交表单,以检查报告是否生成。
但是,有三个报告在单击时会导致一些JS运行,几秒钟后,在同一页面上会显示一个新的链接来下载报告。
如何单击此链接?
我将页面上的所有链接读取到一个WebElements列表中,然后遍历它们,查找href包含javascript的位置: to void;
然后,我尝试对列表中的元素allLinks.get(I).click()调用click方法;
这与我对其他报告所做的事情相同,并且工作正常,但在这3个报告中,我得到一个错误“元素当前不可见,因此可能无法与之交互”
使用firebug如果我检查启动运行JS的链接,它会说:
<a onclick="requestReportGeneration('2cad4d4e5c8855c47a88b6ddf8345735', 'reportDiv33','CSV')" href="javascript:void[0];">CSV</a>
有没有人能推荐一种点击链接的方法?
这个页面包含了很多CSV的链接,所以我不能只使用链接文本。
更新:我刚刚想到了一个可能会有帮助的想法。当我第一次来到带有报告链接的页面时,它会显示"Order report“,我需要单击标题,然后调用JS函数来展开该部分并显示链接。
报告是有效的,因为当我来到这个页面时,我只是阅读了页面源代码的所有href并执行了driver.get(reportList.get(i);所以我实际上没有点击这个链接。
我添加了一个链接来获取标题的xpath并单击它,但是当我尝试单击带有href或javascript: void的链接时,我仍然得到一个错误,说它不可见。
发布于 2013-05-02 10:16:03
检查此命令是否单击任何(实际上是javascript:void的第一个)链接
driver.findElement(By.xpath("//a[contains(@href,\"javascript:void[0]\")]")).click();
如果是,则表明迭代器有问题
发布于 2013-09-17 10:43:45
对于包含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 ...
https://stackoverflow.com/questions/16303195
复制相似问题