如何解决寻找制作硒刮产品的解决方案
我正在处理我的宠物项目。至于现在,我想解析产品名称及其价格。 访问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());
硒告诉我
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"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。