我试图点击具有相同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);
}
答案 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
按钮
.schedule>a[href*!='Mammogram']>img
Book a Mammogram
按钮
.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);
}