java - 如何在 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
每个元素的“”?我想获取图像的链接并下载名称和价格。
查看图片。
解决方案
代码 :
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();
任何其他操作。
相信这会有所帮助。
推荐阅读
- c - 为什么不是第一个开始处理我的代码?
- java - 过滤列表中的列表
- mysql - 如何为行中的多个集合计算存储过程中两个日期之间的差异
- reactjs - 带有包含 HTML 标记的翻译的 React-i18n Trans 组件不起作用
- javascript - 是否有任何有意义的用例将一个函数对象的实例分配给另一个函数对象的原型属性?
- css - 使用 @keyframes 禁用其他变换/过渡动画
- ssl - 如何在 ISPConfig 3 中强制更新 Let's Encrypt 证书?
- .net - 实体框架迁移:无法将属性转换为 NotMapped 运行时 getter
- c# - Kestrel 使用 Microsoft.AspNetCore.Authentication.Negotiate 与多个用户
- r - 使用 tidytext 标记单词 - 保留标点符号