Selenium webdriver:无法单击链接(不在iframe内部,可以从webelement打印gettext值)

时间:2013-11-15 03:53:57

标签: selenium selenium-webdriver

请不要就我发布类似问题的原因发表评论。我尝试了很多东西,没有任何工作。下面是HTML

    <div id="businessSettingsColumn1">
       <div class="sectionLink"> 

       <a href="serviceprovider/30015514/settings/details">Business details</a>
       </div>
      <div class="sectionLink">
        <a href="serviceprovider/30015514/settings/hours">Operating hours</a>
      </div>
     <div class="sectionLink">
     <a href="settingsserviceproviderleave.action?purpose=closed">Closed dates</a>
     </div>
     <div class="sectionLink">
      <a href="serviceprovider/30015514/settings/booking/notifications">Appointment            notifications</a>
  </div>

我需要点击第二个链接 我试过了

1)webdriver.findElement(By.partialLinkText("Operating hours")).click();

2)webDriver.get(mylement.findElement(By.tagName("a")).getAttribute("href"));

3)

List<WebElement> businessLinks= busCol.findElements(By.className("sectionLink"));

    for(WebElement bLink :businessLinks) {
    if(bLink.getText().contains("Operating hours")) {

    bLink.findElement(By.tagName("a")).click();
    }
            }

4)使用“动作”构建器移动鼠标,然后单击

此外,当我连续3次这样做时,我的元素被点击了

webdriver.findElement(By.partialLinkText("Operating hours")).click();
webdriver.findElement(By.partialLinkText("Operating hours")).click();
webdriver.findElement(By.partialLinkText("Operating hours")).click();

我使用的是Firefox 25.0版和Selenium 2.35.0版。有趣的是,当我做一个sysout时,值被打印,当我尝试使用webdriver获取url时,我得到“在缓存中找不到元素 - 也许页面已经改变,因为它被查找了”..它几乎一个只有链接的静态页面,所以我不明白为什么我无法点击它..任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以尝试在单击之前调用该元素上的focus()吗?

答案 1 :(得分:1)

这通常是因为元素在某个时刻存在,但随后发生了一些事情,然后由于某种原因它不再存在。例如,当页面进行AJAX调用时,我会经常遇到这种情况。

您是否尝试过添加一些等待以确保元素已准备就绪?