【问题标题】:Selenium Google Places Autocomplete JavaSelenium Google Places 自动完成 Java
【发布时间】:2016-11-29 03:08:51
【问题描述】:

我正在尝试自动化 Google 自动建议并使用 Selenium 选择随机建议。

WebElement element = driver.findElement(By.xpath("//input[@id='id_address']"));
element.sendKeys(“whi”);

如何从 Google 建议列表中随机选择一个建议?

【问题讨论】:

  • 我试过 element.sendKeys(Keys.Down) 突出显示列表中的第三项,但即使使用了 click(),它也没有被点击。

标签: java selenium autocomplete


【解决方案1】:

首先,您需要找到代表自动完成建议选项的所有匹配元素。由于自动完成建议的出现是异步的,因此您需要使用循环或WebDriverWait 等待它们出现。获取List<WebElement> 列表的行将继续尝试查找与给定选择器匹配的元素,并且仅当列表(来自它包装的driver.findElements 调用)不为空时才会返回。如果在给定的超时时间(10 秒,在这种情况下来自WebDriverWait 构造函数)中没有找到非空列表,它将抛出TimeoutException。然后,获得建议列表后,只需从该列表中随机选择一个并单击它即可。

driver.get("https://www.google.com");
driver.findElement(By.name("q"))
      .sendKeys("whi");
List<WebElement> options = new WebDriverWait(driver, 10).until(ExpectedConditions.numberOfElementsToBeMoreThan(By.cssSelector("[role='option']"), 0));
int index = (int) (Math.random() * options.size());
options.get(index)
       .click();

【讨论】:

  • 如何从显示的列表中选择地点。 cssSelector 的角色和选项应该给出什么?我无法获得谷歌地点列表的 xpath。请让我知道我哪里出错了
  • 我不确定你在问什么。对于常规的谷歌搜索自动建议,我发布的代码应该可以工作。如果它不适合您,请右键单击您看到的任何建议并在浏览器的开发人员控制台中检查它们。通过查看 DOM 元素,您可以找出要使用的正确定位器。
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 2017-07-10
  • 2014-05-01
  • 2013-04-09
  • 2017-10-02
  • 1970-01-01
  • 2022-06-19
相关资源
最近更新 更多