簡體   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