我正在尝试使用Python和Selenium开发一个程序来自动查找给定半径范围内的填充过程。我选择使用一个半径和地址的网站。我能够输入半径和地址,但是,我需要能够点击由谷歌地图提供支持的下拉菜单中的选项,以便地址格式正确,谷歌可以找到地址和地点地图上的半径。
我遇到的问题是下拉菜单是由浏览器生成的,我无法检查该元素。我不知道如何使用Selenium使用Python或Javascript来获取元素,以便单击第一个下拉菜单选项。单击下拉菜单选项后,将在地图上生成半径,然后我将能够继续单击计算按钮以查找半径范围内的总体。
TLDR:如何在Selenium中使用Python或Javascript点击谷歌地图支持的下拉菜单?无法检查下拉菜单。
网站: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();
答案 0 :(得分: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()