无法使用selenium和python选择下拉菜单

时间:2015-06-25 22:20:17

标签: python selenium selenium-webdriver

我正在尝试访问一个页面,要求我从下拉菜单中选择一个选项。

当我运行我的代码atm时,我得到一个错误,它说它无法通过id找到下拉元素。我不知道如何解决这种情况,因为我正在复制和粘贴元素id。

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time

driver = webdriver.Firefox()
driver.get('http://webapp.northampton.edu/coursesearch/default.aspx')
time.sleep(1)
dropdown = driver.find_element_by_id('pg0_V_ddlTerm')
select_box = Select(dropdown)
time.sleep(1)
select_box.select_by_value('2015;S2')

我也试过按名字选择,但这也证明没有结果。 一旦我选择下拉列表,我就会尝试选择S2 2015选项。

感谢您的帮助!

编辑:我输入time.sleep因为我认为当时网站没有满载是试图选择下拉。

2 个答案:

答案 0 :(得分:1)

select 元素位于iframe 中,switch to it

driver.switch_to.frame("cSearch")

dropdown = driver.find_element_by_id('pg0_V_ddlTerm')
select_box = Select(dropdown)
select_box.select_by_value('2015;S2')

答案 1 :(得分:0)

您可能有兴趣使用action chain。来自文档:

  

ActionChains是一种自动执行低级别交互的方法,例如鼠标移动,鼠标按钮操作,按键和上下文菜单交互。

示例:

dropdown = driver.find_element_by_id('pg0_V_ddlTerm')
actions = ActionChains(driver)
actions.move_to_element(dropdown)
actions.click(dropdown)
select_box = Select(dropdown)
action.move_to_element(select_box.select_by_value('2015;S2'))
action.click(select_box)
actions.perform()