使用 selenium Python 库单击下拉菜单中的项目
Click an item in a drop-down menu using selenium Python library
我正在尝试 select 下拉菜单中的元素。我尝试使用 "driver.find_element_by_xpath" 调用来定位列表中的项目。问题是我不能 select 它。我尝试了“.click()”调用,但错误提示该元素不可交互。我如何 select 给定下图中 HTML 代码的项目?
试试这个,点击 ul 标签,然后点击你想要 select 的下拉列表 li。
如果是JS自带的,点击下拉获取li值,否则直接点击与你的值匹配的li值
element_dropdown = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'rcbList')))
current_user_driver.execute_script("arguments[0].click();",element_dropdown)
all_li_dropdown = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.CLASS_NAME, 'rcbItem')))
for single_li in all_li_dropdown:
li_value = single_m_li.get_attribute("innerHTML")
if li_value == "your_value":
driver.execute_script("arguments[0].click();", single_li)
break
您应该粘贴您使用的代码以帮助理解您在做什么。
但仅凭您的解释,我会说您可能需要单击保管箱,以便列表可见且可单击。
然后点击你想要的项目。
Python
driver.find_element_by_name('rcbScroll rcbWidth').click()
driver.find_element_by_name('rcbHovered').click()
Java
driver.findElement(By.className("rcbScroll rcbWidth")).click();
driver.findElement(By.className("rcbHovered")).click();
我找到了解决办法。由于下拉菜单被编码为 "input" HTML 标签,传统的 select Python 方法不起作用,因为它仅适用于 "select" HTML标签。但是 .send_keys 方法工作得很好。所以下面的简单代码就可以解决问题:
variable_name = driver.find_element_by_xpath('xpath of an <input> element in HTML code')
variable_name.click() #Clicks on the drop down button
variable_name.send_keys("text of an option in the drop down list") #sends text of an option in the drop down
我正在尝试 select 下拉菜单中的元素。我尝试使用 "driver.find_element_by_xpath" 调用来定位列表中的项目。问题是我不能 select 它。我尝试了“.click()”调用,但错误提示该元素不可交互。我如何 select 给定下图中 HTML 代码的项目?
试试这个,点击 ul 标签,然后点击你想要 select 的下拉列表 li。
如果是JS自带的,点击下拉获取li值,否则直接点击与你的值匹配的li值
element_dropdown = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CLASS_NAME, 'rcbList')))
current_user_driver.execute_script("arguments[0].click();",element_dropdown)
all_li_dropdown = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.CLASS_NAME, 'rcbItem')))
for single_li in all_li_dropdown:
li_value = single_m_li.get_attribute("innerHTML")
if li_value == "your_value":
driver.execute_script("arguments[0].click();", single_li)
break
您应该粘贴您使用的代码以帮助理解您在做什么。
但仅凭您的解释,我会说您可能需要单击保管箱,以便列表可见且可单击。
然后点击你想要的项目。
Python
driver.find_element_by_name('rcbScroll rcbWidth').click()
driver.find_element_by_name('rcbHovered').click()
Java
driver.findElement(By.className("rcbScroll rcbWidth")).click();
driver.findElement(By.className("rcbHovered")).click();
我找到了解决办法。由于下拉菜单被编码为 "input" HTML 标签,传统的 select Python 方法不起作用,因为它仅适用于 "select" HTML标签。但是 .send_keys 方法工作得很好。所以下面的简单代码就可以解决问题:
variable_name = driver.find_element_by_xpath('xpath of an <input> element in HTML code')
variable_name.click() #Clicks on the drop down button
variable_name.send_keys("text of an option in the drop down list") #sends text of an option in the drop down