繁体   English   中英

Select 亚马逊产品列表中的第二个产品,使用 Selenium -JAVA

[英]Select second product from product list in amazon using Selenium -JAVA

我正在尝试使用 selenium 刮亚马逊。

我已经编写了一个脚本,但我无法 select 列表中的产品。 每次使用selenium检索到的list长度都不一样,是不是xpath有问题?

任何帮助,将不胜感激。

脚步:

  1. 获取 URL (amazon.com)
  2. 搜索充电器
  3. select 是列表中的第 10 个产品。

到目前为止,我的尝试如下:

public class AmazonSearch {

    public static void main(String[] args) {
        System.setProperty("webdriver.chrome.driver", "E:\\geckodriver-v0.29.0-win64\\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://www.amazon.com");
        driver.findElement(By.id("twotabsearchtextbox")).click();
        driver.findElement(By.id("twotabsearchtextbox")).clear();
        System.out.println("Hello world!");
        driver.findElement(By.id("twotabsearchtextbox")).sendKeys("charger");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.id("nav-search-bar-form")).submit();
        driver.findElement(By.id("a-autoid-0-announce")).click();
        System.out.println("Hello world!");

        driver.findElement(By.id("s-result-sort-select_2")).click();
        List<WebElement> resultsList = driver.findElements(By.xpath(".//span[@class='a-size-medium a-color-base a-text-normal']"));
        int size = resultsList.size();
        System.out.println("Size of list = " + size);
        resultsList.get(2).click();
    }

有时WebElementresultsList中的插入是在加载页面中的所有充电器项目之前完成的,有时是精确的。 首先确保页面已加载,然后插入项目。 您可以使用“显式等待”。 尝试以下操作:

WebElement we = new WebDriverWait(driver, 25)
 .until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='Related searches']")));

List<WebElement> resultsList = driver.findElements(By.xpath(".//span[@class='a-size-medium a-color-base a-text-normal']"));
  • //span[text()='相关搜索'] xpath 查找包含“相关搜索”跨度文本的元素。 在搜索结果中搜索 (ctrl + f) '相关搜索'。 为确保以一种方式显示页面加载 - 有许多不同的方式。
  • 增加等待时间以查找元素并处理超时异常 - 执行以下操作:

公共 class AmazonSearch {

public static void main(String[] args)
{
    try
    {
        System.setProperty("webdriver.chrome.driver", "E:\\geckodriver-v0.29.0-win64\\chromedriver.exe");
        ChromeDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.get("https://www.amazon.com");
        driver.findElement(By.id("twotabsearchtextbox")).click();
        driver.findElement(By.id("twotabsearchtextbox")).clear();
        System.out.println("Hello world!");
        driver.findElement(By.id("twotabsearchtextbox")).sendKeys("charger");
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.findElement(By.id("nav-search-bar-form")).submit();
        driver.findElement(By.id("a-autoid-0-announce")).click();
        System.out.println("Hello world!");

        driver.findElement(By.id("s-result-sort-select_2")).click();
        WebElement we = new WebDriverWait(driver, 60).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[text()='Related searches']")));
        List<WebElement> resultsList = driver.findElements(By.xpath(".//span[@class='a-size-medium a-color-base a-text-normal']"));
        int size = resultsList.size();
        System.out.println("Size of list = " + size);
        resultsList.get(2).click();
    }catch(TimeoutException e) 
    {
        System.out.println(e);
        }   
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM