【问题标题】:Selenium webdriver: How can I click these links?Selenium webdriver:如何单击这些链接?
【发布时间】:2013-04-27 17:57:24
【问题描述】:
<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();

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

【问题讨论】:

  • 请检查该链接,您应该能够看到一个名为 style 的属性,其值为 display:none,这使得 WebDriver 无法访问该元素。
  • 我看不到。我检查了元素,它的 css 是:table tr td a { text-decoration: underline; -moz-text-blink: none; -moz-text-decoration-color: -moz-use-text-color; -moz-text-decoration-line: underline; -moz-text-decoration-style: solid; 另外,如果我使用 firebug,我可以将 css 更新为 display:none,然后我根本看不到链接。我可以看到页面上的链接我只是无法让 webdriver 点击它们。
  • xPath 对吗?您可以检查 chrome 上的元素,右键单击该 DOM 元素并复制 xPath
  • 我刚刚注释掉了所有其他代码。 xpath 是正确的,测试没有失败,但它没有点击链接。
  • 链接是否包含在跨度中?一些为您在页面上创建元素的 javascript 包将进行自己的格式化,有时您必须在使用 Selenium 时单击父元素才能与它们交互。

标签: java javascript automation hyperlink selenium-webdriver


【解决方案1】:

尝试在 while 循环之前放置一个断点,调试您的脚本,然后单步执行并使用 Eclipse 的“显示”选项卡来询问链接的内容。尝试评估示例语句,例如:

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

这些链接(或者 webdriver 看到它们的方式)一定有一些奇怪的地方,但是这样的调试会让你找出它是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多