有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法为同一xpath单击多个按钮

我正在尝试单击网页上所有具有相同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) 个答案

  1. # 1 楼答案

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

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

    编辑:作为HemChes答案的补充: 您已经使用cssSelector为ParentElement选择了按钮,但随后在第一个结果中搜索a标记。请尝试以下代码:

    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选择器)

  2. # 2 楼答案

    用于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);
                             }