[英]Can't seem to select from drop down menu - Python Selenium
如标题所示,无论如何,我似乎都无法从该网站的下拉菜单中获得 select。
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver=webdriver.Chrome()
driver.get('https://assessing.nashuanh.gov/search.asp')
time.sleep(1)
select=Select(driver.find_element_by_xpath('//*[@id="cboSearchType"]'))
select.select_by_value('2')
首先,您必须处理页面中的框架。 看起来此下拉列表中没有值2
,因此您必须传递一个有效值。
driver.switch_to.frame("middle")
select = Select(driver.find_element_by_xpath('//*[@id="cboSearchType"]'))
select.select_by_value('Parcel')
<option>
元素的值/文本作为html-select中的Owner位于<frame>
中,因此您必须:
诱导WebDriverWait使所需的帧可用并切换到它。
诱导WebDriverWait使所需元素成为可点击的。
您可以使用以下任一定位器策略:
使用CSS_SELECTOR
和select_by_value()
:
driver.get('https://assessing.nashuanh.gov/search.asp') WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"frame[name='middle']"))) Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#cboSearchType")))).select_by_value("Owner")
使用XPATH
和select_by_visible_text()
:
driver.get('https://assessing.nashuanh.gov/search.asp') WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//frame[@name='middle']"))) Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='cboSearchType']")))).select_by_visible_text("Owner")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
您可以在以下位置找到一些相关的讨论:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.