如何使用 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 自动填充框中选择值

从技术角度来看,Selenium 如何点击网页上的元素?

如何使用 Python 从 Selenium 的重定向链中获取中间 URL?

如何利用selenium写自动化测试脚本

如何使用Selenium Python从reddit.com搜索页面上的问题中提取title和href属性

Selenium自动化应该避免的测试场景