2016-10-23 21 views
1

私はPythonとSeleniumを使って、与えられた半径内の人口を調べるプロセスを自動化するプログラムを開発しようとしています。私は、半径と住所を取るウェブサイトを使用することを選択しました。私は半径と住所を入力することができますが、Googleマップで提供されるドロップダウンメニューのオプションをクリックできるようにする必要があります。そのため、住所はGoogleが住所と場所を見つける正しい方法でフォーマットされていますマップ上の半径。Googleマップ入力のドロップダウンメニューオプションを選択できません。

私が問題になっているのは、ドロップダウンメニューがブラウザによって生成され、要素を検査できないということです。最初のドロップダウンメニューオプションをクリックするには、Seleniumを使用してPythonまたはJavascriptで要素に到達する方法がわかりません。ドロップダウンメニューオプションをクリックすると、地図上に半径が生成されます。次に、計算ボタンをクリックして半径内の母集団を見つけることができます。

TLDR:SeleniumのPythonまたはJavascriptでGoogleマップを使用するドロップダウンメニューをクリックするにはどうすればよいですか?ドロップダウンメニューは検査できません。

ウェブサイト:https://www.freemaptools.com/find-population.htm

Pythonコード:

def putInputs(driver,address,radius): 
    print "Entering inputs:" 
    radius_input = "document.getElementById('radiusinputmi').value = " + radius 
    driver.execute_script(radius_input) 
    driver.find_element_by_id("radiusinputmi").send_keys(radius) 
    driver.find_element_by_id("tb_searchlocation").send_keys(address) 
    # i need to click on the drop down menu so the radius shows up! 

更新:

私は、ドロップダウンメニューは、HTMLでページの下部に表示されることを発見しました。しかし、私はまだそれを選択する方法が不明です。私は、次のJavascriptコードを使用して、目的の要素の選択に近づけます。

Javascriptを:ここで

// address of location to find 
var address = "Indiana University Blooington"; 

// get input text box 
var location_input = document.getElementById("tb_searchlocation"); 

// set input text box to the address given 
location_input.value = address; 

// get the drop down menu with the available options given input location 
var x = document.getElementsByClassName("pac-container pac-logo")[1]; 

// make the google maps options drop down visible 
x.setAttribute("style","width: 212px; position: absolute; left: 2px; top: 901px;"); 

// get the first option from the google maps drop down menu 
var items = x.getElementsByClassName("pac-item"); 

// HOW CAN I SELECT THE FIRST DROP DOWN MENU?? 
// tried: 
// items[0].focus(); 
// items[0].select(); 
// items[0].click(); 

答えて

1

私はあなたがドロップダウンから最初の値を選択するコードのスニペット得られます。

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.common.exceptions import NoSuchElementException 
import time 

driver = webdriver.Chrome() 
driver.get("https://www.freemaptools.com/find-population.htm") 
#driver.find_element_by_id("radiusinputmi").send_keys(radius) 
ele = driver.find_element_by_id("tb_searchlocation") 
ele.send_keys("Indiana University Blooington") 
time.sleep(10) 
ele.send_keys(Keys.DOWN) 
ele.send_keys(Keys.RETURN) 

time.sleep(10) 
driver.quit() 
関連する問題