2016-07-25 88 views
1

我试图自动化Google自动建议并选择使用Selenium的随机建议。Selenium Google Places自动完成Java

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

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

+0

我试图 ** element.sendKeys(Keys.Down)** 这凸显在列表中的第三项但它没有获得点击eventhough点击()被使用。 – Durga

回答

1

首先,您需要找到所有表示自动完成建议选项的匹配元素。由于自动完成建议的出现是异步的,因此您需要等待它们使用循环或WebDriverWait显示。获取List<WebElement>列表的行将继续尝试查找与给定选择器匹配的元素,并且仅当列表(来自调用的driver.findElements调用)不为空时才会返回。如果在给定的超时时间内(构造函数中的10秒)未找到非空列表,它将抛出一个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(); 
+0

如何从列表显示中选择地点。应该给cssSelector的角色和选项提供什么?我无法获取谷歌地点列表的xpath。请让我知道我哪里错了 – Durga

+0

我不知道你在问什么。对于经常谷歌搜索自动建议,那么我发布的代码应该工作。如果它不适合您,请右键单击您看到的任何建议,并在浏览器的开发人员控制台中检查它们。通过查看DOM元素,您可以找出要使用的正确定位器。 –