【Selenium学习笔记】webdriver操作下拉框

时间:2021-11-23 09:24:32

网页上常见的下拉框有两种:一种是需要点击一下下拉框,才能弹出下拉列表的下拉框;还有一种是不需要点击,鼠标移动到下拉框上,就自动弹出下拉列表。

对于第一种类型的下拉框一般的处理是两次点击,第一点击弹出下拉框,第二次点击操作元素。第二种我们可以使用move_to_element()进行操作。


不需要点击的下拉框:

百度首页右上角的“设置”就是这样的下拉框。只需要把鼠标移动到上面,就会列出可选的下拉列表。

对于这种类型的下拉框,我们采用webdriver中的鼠标事件进行操作。webdriver中对鼠标的操作包括单机、右击、双击、拖动等,这些操作都封装在ActionChains类中。后面我们会专门针对这些事件进行总结,这里先专注对鼠标移动的操作。

先上源代码:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('http://ww.baidu.com')
driver.maximize_window()


setting = driver.find_element_by_link_text(u'设置')
webdriver.ActionChains(driver).move_to_element(setting).perform()
driver.find_element_by_link_text(u'高级搜索').click()
移动鼠标的操作首先通过webdriver实例化一个ActionChains类的对象,用该对象调用move_to_element() 方法将鼠标悬停在一个元素上,perform是用来执行move_to_element这个动作的。

需要点击的下拉框:

webdriver 对于一般的下拉框处理起来也相当简单,要想定位下拉框中的内容,首先需要定位到下拉框,也就是需要两次定位。

以百度“高级搜索”设置页面中的“时间:限定要搜索的网页的时间是”下拉列表为例,

【Selenium学习笔记】webdriver操作下拉框


我们想定位到其中的“最近一月”,我们可以这样做:

time_setting = driver.find_element_by_id('adv-setting-4')
time_setting.find_element_by_xpath("//option[@value='30']").click()
先定位到id为adv-setting-4的下拉框,然后在定位到value=‘30’的下拉项。