Selenium webdriver:我如何点击这些链接?

Selenium webdriver: How can I click these links?

本文关键字:链接 何点击 webdriver Selenium      更新时间:2023-09-26
<a onclick="requestReportGeneration('857f23e1baa767622a91f970963d8918', 'reportDiv31','CSV')" href="javascript:void[0];">CSV</a>
<a onclick="requestReportGeneration('64107e36323e5877c986edc98a17b6e8', 'reportDiv32','CSV')" href="javascript:void[0];">CSV</a>
<a onclick="requestReportGeneration('2cad4d4e5c8855c47a88b6ddf8345735', 'reportDiv33','CSV')" href="javascript:void[0];">CSV</a>

我在一个页面上有这三个链接,我想依次点击每一个。我正在阅读页面上的所有链接到一个web元素列表,然后我依次通过每个链接,如果href包含javascript:void[0]我然后尝试点击它:

for (int i = 0; i < allLinks.size(); i++) {
    String reportLink = allLinks.get(i).getAttribute("href");
    if (reportLink.contains("javascript:void[0];")) 
    {
        allLinks.get(i).click();
        /// Do some more stuff
    }

问题是我一直得到一个错误说元素是不可见的。我也试过只是加载页面,而不是得到所有的链接做

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

但这也会给出元素不可见的错误。有人能告诉我为什么不行吗?

尝试在while循环之前放置一个断点,调试脚本,然后进入该断点并使用Eclipse的Display选项卡查询链接的情况。试着对如下样例语句求值:

allLinks.size();
allLinks.get(i).isDisplayed();
allLinks.get(i).isEnabled();

这些链接肯定有什么奇怪的地方(或者webdriver看到它们的方式),但是像这样的调试将让你发现它是什么。