2016-07-25 15 views
1

Googleの自動提案を自動化し、Seleniumを使用してランダムな候補を選択しようとしています。Selenium Google Places Autocomplete Java

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

Googleの提案のリストからランダムな候補を選択するにはどうすればよいですか?

+0

私はリスト内の3番目の項目を強調表示しますが、それは(クリック本家クリックを取得didntの ** element.sendKeys(Keys.Down)** )を試してみましたが使用されています。 – Durga

答えて

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(); 
+0

リスト表示から場所を選択する方法。 cssSelectorの役割とオプションに何を与えるべきですか?私はGoogleの場所リストのxpathを得ることができません。私はどこが間違っているのか教えてください – Durga

+0

私はあなたが何を求めているのか分かりません。通常のGoogle検索の自動候補については、私が掲載したコードがうまくいくはずです。そうでない場合は、表示されている候補を右クリックして、ブラウザの開発者コンソールで確認してください。 DOM要素を見ることで、適切なロケータを使用することができます。 –

関連する問題