如何使用 Selenium 从亚马逊上的自动建议中“点击”某些建议?
Posted
技术标签:
【中文标题】如何使用 Selenium 从亚马逊上的自动建议中“点击”某些建议?【英文标题】:How to "click" on certain proposal from autosuggestion on Amazon using Selenium? 【发布时间】:2019-10-09 23:55:52 【问题描述】:我正在尝试在 amazon.com 上自动完成自动完成建议。但与谷歌搜索选项不同,建议的 xpath 总是在变化。我发布的代码并非每次都有效,因为有时所需建议的 xpath/id/cssselector 会发生变化(@id=\"issDiv8\"] 有时它是 "issDiv4" 或 "issDiv6" 等等。
WebElement searchTextField = driver.findElement(By.id("twotabsearchtextbox"));
searchTextField.sendKeys("turbo");
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//*[@id=\"issDiv8\"]")));
List<WebElement> autoSuggest = driver.findElements(By.xpath("//*[@id=\"issDiv8\"]"));
System.out.println("Auto Suggest List ::" + autoSuggest.size());
for (int i = 0; i < autoSuggest.size(); i++)
System.out.println(autoSuggest.get(i).getText());
if (autoSuggest.get(i).getText().equals("turbotax"))
autoSuggest.get(i).click();
System.out.println("Success");
break;
【问题讨论】:
欢迎来到 Stack Overflow!请避免使用第三方服务来显示图像。如果您需要添加图像,请在编辑时单击图像按钮,或复制图像并单击 CTRL+V,或以任何其他方式将其粘贴到帖子中,将它们添加到帖子中。第三方图片服务can break at any time,要么留下死链接,要么网址可用于恶意目的。 【参考方案1】:使用WebdriverWait
处理动态元素,使用下面的xpath
WebDriverWait wait = new WebDriverWait(driver, 30);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@data-keyword='turbotax']")));
element.click()
【讨论】:
当我尝试买东西时,我对“数量”有几乎相同的问题。我应该提出新话题还是可以在这里提问? @Alex :那应该是不同的问题。这是特定问题的解决方案,可供未来的读者使用。如果您在单个帖子上提出多个问题,OP 可能会混淆看到此答案。谢谢。以上是关于如何使用 Selenium 从亚马逊上的自动建议中“点击”某些建议?的主要内容,如果未能解决你的问题,请参考以下文章
如何从用于使用 Selenium 填写表单的 chrome 自动填充框中选择值
如何使用 Python 从 Selenium 的重定向链中获取中间 URL?