0

我正在尝试单击具有相同 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);
                }
4

2 回答 2

0

当链接被点击时,您是否会离开页面或通过 Javascript 更改其元素?如果是这样,那么第一次点击成功,所有后续点击都失败,因为引用存储在schedule已失效。

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

编辑:除了 HemChes 答案:您已经选择了带有 cssSelector for 的按钮ParentElement,然后在第一个结果中搜索 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&p 错误和循环计数器

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

于 2013-10-23T11:08:08.923 回答
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);
                         }
于 2013-10-23T13:37:19.183 回答