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

时间:2013-05-03 10:45:28

标签: java javascript automation hyperlink selenium-webdriver

<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>

我在页面上有这三个链接,我想依次点击每个链接。我正在将页面上的所有链接读入WebElements列表,然后如果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();

但这也只是给元素不可见的错误。 谁能告诉我为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

尝试在while循环之前放置一个断点,调试脚本,然后单步执行它并使用Eclipse的Display选项卡查询链接的内容。尝试评估样本语句,如:

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

链接(或者webdriver看到它们的方式)一定有些奇怪,但是像这样的调试可以让你知道它是什么。