【发布时间】:2021-03-19 21:44:21
【问题描述】:
我正在尝试使用 selenium 抓取亚马逊。
我已经编写了一个脚本,但我无法从列表中选择产品。每次使用selenium检索到的list长度都不一样,是不是xpath有问题?
任何帮助将不胜感激。
步骤:
- 获取网址 (amazon.com)
- 搜索充电器
- 从列表中选择第 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();
}
【问题讨论】:
-
选择第二个产品有什么问题?为什么总是使用隐式等待?你听说过明确或流畅的等待吗?
-
我正在测试隐式等待,将其删除。问题是我无法找到正确的路径,我可以将其填充到列表中,或者将产品选择为类似于 .get(int) 的第 2 或第 3 或第 4 个产品。希望你明白吗?
-
我已经编辑了问题
标签: java selenium selenium-webdriver selenium-chromedriver