首页 > 解决方案 > 如何在 Selenium 迭代期间访问每个元素的非唯一子类?

问题描述

我正在使用每个元素的 XPath 遍历网站上的元素。

//*[@id="app"]/div[1]/main/div[2]/section/div/section/div[4]/div[1]/div[X]

X values:1 to n. 其中 X 是元素的序数。

xpath.getText()给我当前商品的名称和价格。我也想下载图片。图像的类名不是唯一的。每个元素都一样:“ shop-card__image-block”。

如何访问shop-card__image-block每个元素的“”?我想获取图像的链接并下载名称和价格。

查看图片。

第一张图片

第二张图片

标签: javaseleniumselenium-webdriver

解决方案


代码 :

WebDriverWait wait = new WebDriverWait(driver, 30);
int divSize = driver.findElements(By.xpath("//*[@id='app']/div[1]/main/div[2]/section/div/section/div[4]/div[1]/div")).size();

for (int i = 1; i<= divSize; i++) {
    WebElement parentDiv = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='app']/div[1]/main/div[2]/section/div/section/div[4]/div[1]/div['"+i+"']")));
    WebElement image = parentDiv.findElement(By.xpath(".//descendant::div[contains(@class,'shop-card__image-block')]"));
    
    // now image is a web element, you can perform a click on it like image.click(); or any other operation. 
}

现在图像是一个网络元素,您可以像点击它一样执行image.click();任何其他操作。

相信这会有所帮助。


推荐阅读