Selenium - 使用Java获取电子商务网站页面上所有产品的名称

时间:2017-05-25 14:17:15

标签: java selenium automation

假设我在Amazon" Camera"上搜索过。现在打开一个新页面,我想获得该页面上的所有产品名称。

我知道我需要使用'循环,但我不知道如何继续。请帮帮我。

我可以获得一种产品的名称,但是如何获得所有产品。 如果我用于循环     for(i = 0; i<"我应该放在这里&#34 ;; i ++) 我不想直接输入一个整数,而是包含所有产品的列表大小。但我不确定如何获得这个尺寸。

2 个答案:

答案 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"));    
}