寻找制造硒废料产品的解决方案

Searching for the solution to make selenium scrape products

我正在做我的宠物项目。至于现在,我想解析产品名称及其价格。 访问shoppingSite,按下地图下方的按钮,然后再次按下右侧的按钮。选择上方的送货选项,您将被重定向到商店。菜单栏位于搜索部分附近。单击并选择任何类别。当您到达包含产品的页面时,您可以打开开发者工具。 所以,我不知道如何让硒给我名字和价格。 我尝试过的:

for (int i = 0; i < 6; i++) {
    Thread.sleep(1000);
    JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
    javascriptExecutor.executeScript("window.scrollBy(0, 200)");
    Thread.sleep(1000);
}

webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.category.page__content")));
WebElement element = driver.findElement(By.cssSelector("div.category.page__content"));
System.out.println(element.getText());

Selenium 告诉我

Exception in thread "main" org.openqa.selenium.TimeoutException:
Expected condition failed: waiting for visibility of element

滚动,等待元素的可见性。没有帮助我。 将不胜感激。

要获取产品名称,您可以这样做:

webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a.product-title")));
Thread.sleep(300);
List<WebElement> productNames= driver.findElements(By.cssSelector("a.product-title"));
List<WebElement> productPrices= driver.findElements(By.cssSelector("div.current-price"));

如果您想将这些名称和价格作为字符串列表获取,您可以使用此方法:

 public List<String> getElementsListTexts(By element){
    List<String> texts = new ArrayList<>();
    List<WebElement> list = driver.findElements(element);
    for (WebElement el : list ){
        texts.add(el.getText());
    }
    return texts;
}

所以会是

webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a.product-title")));
Thread.sleep(300);
List<String> names = getElementsListTexts(By.cssSelector("a.product-title"));
List<String> prices = getElementsListTexts(By.cssSelector("div.current-price"));