假设我在Amazon" Camera"上搜索过。现在打开一个新页面,我想获得该页面上的所有产品名称。
我知道我需要使用'循环,但我不知道如何继续。请帮帮我。
我可以获得一种产品的名称,但是如何获得所有产品。 如果我用于循环 for(i = 0; i<"我应该放在这里&#34 ;; i ++) 我不想直接输入一个整数,而是包含所有产品的列表大小。但我不确定如何获得这个尺寸。
答案 0 :(得分:0)
首先,您需要在列表中收集所有元素。列表中每个结果的ID(在亚马逊上,我在您的示例中进行了相机搜索)类似于result_1,result_2,result_3等,因此您需要在xpath上进行部分匹配:
List<WebElement> resultsList = getDriver().findElements(By.xpath(".//*[starts-with(@id, 'result_')]"));
在列表中包含所有结果元素之后,您可以使用for循环来完成它,例如:
for (WebElement result:resultsList) {
System.out.println(result.getText());
}
这应打印出结果列表中每个项目显示的任何文本,可能您需要定制文本以删除您不感兴趣的内容,但希望这会给您一个开始。
答案 1 :(得分:0)
使用 cssSelector 列出所有元素,并使用 for 循环来浏览每个元素
List <WebElement> elements = driver.findElements(By.cssSelector(".a-size medium.s-inline.scx-truncate.s-access-title.a-text-normal")); for (WebElement e: elements) { System.out.println(e.getAttribute("innerText")); }