我正在尝试访问一个页面,要求我从下拉菜单中选择一个选项。
当我运行我的代码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因为我认为当时网站没有满载是试图选择下拉。
答案 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()