2016-07-25 85 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元素,您可以找出要使用的正確定位器。 –