Selenium Google Places自动完成Java

Selenium Google Places自动完成Java,java,selenium,autocomplete,Java,Selenium,Autocomplete,我正在尝试自动化谷歌自动建议,并使用Selenium选择一个随机建议 WebElement element = driver.findElement(By.xpath("//input[@id='id_address']")); element.sendKeys(“whi”); 如何从Google建议列表中选择随机建议?首先,您需要找到表示自动完成建议选项的所有匹配元素。由于自动完成建议的外观是异步的,因此需要使用循环或WebDriverWait等待它们出现。获取列表列表的行将继续尝试查找与给

我正在尝试自动化谷歌自动建议,并使用Selenium选择一个随机建议

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

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

首先,您需要找到表示自动完成建议选项的所有匹配元素。由于自动完成建议的外观是异步的,因此需要使用循环或
WebDriverWait
等待它们出现。获取
列表
列表的行将继续尝试查找与给定选择器匹配的元素,并且仅当列表(来自其包装的
驱动程序.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();
driver.get(“https://www.google.com");
驱动程序findElement(按名称(“q”))
.sendKeys(“whi”);
List options=new WebDriverWait(driver,10).until(ExpectedConditions.numberofelementstobemore(By.cssSelector(“[role='option']”),0));
int index=(int)(Math.random()*options.size());
options.get(索引)
。单击();

如何从显示的列表中选择位置。cssSelector的角色和选项应该给出什么?我无法获取google places列表的xpath。请让我知道我要去哪里我不知道你在问什么。对于常规的谷歌搜索自动建议,那么我发布的代码应该可以工作。如果不适合您,那么右键单击您看到的任何建议,并在浏览器的开发人员控制台中检查它们。通过查看DOM元素,您可以找出要使用的正确定位器。我尝试了element.sendKeys(Keys.Down),它突出显示列表中的第三项,但即使使用了click(),它也没有被单击。