Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-Selenium-通过下拉菜单循环-选项不可见_Python_Selenium_Web Scraping - Fatal编程技术网

Python-Selenium-通过下拉菜单循环-选项不可见

Python-Selenium-通过下拉菜单循环-选项不可见,python,selenium,web-scraping,Python,Selenium,Web Scraping,背景:我试图从以下网页检索有关哥伦比亚2015年市政选举数据的信息: 作为一个起点,我已经成功地利用BeautifulSoup(15.152)在Abejorral市获得了登记选民(“合格人士”)的数量。下一步是对所有市政当局(“市政当局”)采取同样的措施 为了做到这一点,我尝试在Python3.5中绕过Selenium,在“市政”下拉菜单中循环,这样我就可以逐个选择每个市政,并检索“角色习惯化”的相应编号。我目前面临的问题是,我无法告诉Selenium在下拉菜单中选择另一个选项/市政当局,例如“

背景:我试图从以下网页检索有关哥伦比亚2015年市政选举数据的信息:

作为一个起点,我已经成功地利用BeautifulSoup(15.152)在Abejorral市获得了登记选民(“合格人士”)的数量。下一步是对所有市政当局(“市政当局”)采取同样的措施

为了做到这一点,我尝试在Python3.5中绕过Selenium,在“市政”下拉菜单中循环,这样我就可以逐个选择每个市政,并检索“角色习惯化”的相应编号。我目前面临的问题是,我无法告诉Selenium在下拉菜单中选择另一个选项/市政当局,例如“Abriaqui”。相应的HTML代码如下(特意缩短的选项列表):


待办事项
非主要的
阿布里亚基
亚历杭德里亚
阿马加
YONDO-CASABE
萨拉戈萨

ID为“combo3”的select元素具有“display:none”样式,这使得Selenium无法看到它。您可以使用div ID“combo3\u selected”驱动元素并输入所需的结果

from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

select_div = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@id='combo3_chosen']")))
select_div.click()
input = WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.XPATH, "//input")))
input[0].send_keys("Todos")
input[0].send_keys(Keys.RETURN)
在我的示例中,我单击select_div,它将打开一个带有下拉列表的输入。然后输入'Todos'并按return以加载'Todos'部分

我使用“任何元素的可见性”作为输入,因为页面上有多个隐藏的输入(其他选择)。如果我使用“元素的可见性”,Seleniu会尝试返回第一个不可见的输入“任何元素的可见性”将返回任何可见的输入

或者,您可以打开select_div并找到所需的结果,然后单击该元素