无法单击同一xpath的多个按钮

时间:2013-10-23 10:18:44

标签: java button xpath selenium-webdriver element

我试图点击具有相同xpath的网页上的所有按钮。无法点击链接。 以下是我的剧本:

 WebElement ParentElement= Driver.findElement(By.cssSelector(OR.getProperty(Object))); 
                List<WebElement> schedule= ParentElement.findElements(By.tagName("a"));

                for(int i=1;i<schedule.size();i++){
                    schedule.get(i).click();
                    Thread.sleep(5000L);
                }

2 个答案:

答案 0 :(得分:0)

点击链接后,您是通过Javascript离开页面还是更改其元素?如果是,则第一次单击成功,所有后续点击失败,因为schedule中存储的引用无效。

您必须在每次“点击”之前执行findElement以获得新的参考。 (这也适用于使用此类WebElements的所有其他操作。通常在这些情况下会出现StaleElementReferenceException)

编辑:除了HemChes之外,还有答案: 您已经为ParentElement选择了带有cssSelector的按钮,但随后在第一个结果中搜索了a-tags。请尝试以下代码:

List<WebElement> schedule= getDriver().findElements(By.cssSelector(".schedule>a>img"));

for(int i=0;i<schedule.size();i++){
    schedule.get(i).click();
    Thread.sleep(5000L);
}

修改2:修复了c&amp; p错误和循环计数器

(假设OR.getProperty(Object)返回您在评论中提到的css选择器)

答案 1 :(得分:0)

Book an Appointment按钮

的cssSelector
     .schedule>a[href*!='Mammogram']>img

Book a Mammogram按钮

的cssSelector
     .schedule>a[href*='Mammogram']>img

<强>更新

   driver.get("http://www.nyrp.com/");
   WebElement ParentElement= driver.findElement(By.className("schedule")); 

      List<WebElement> schedule= ParentElement.findElements
                           (By.xpath("//img[@alt='Schedule an appointment']"));
                    System.out.println(schedule.size());

                    for(int i=0;i<schedule.size();i++)
                             {
                                schedule.get(i).click();
                                Thread.sleep(5000);
                         }