selenium常用操作之下拉框操作

下拉框操作:

      一般下拉框适用场景:在新增时有下拉框选项,在二级联动或多级联动有下拉(比如:在选择省市县时的多级联动下拉、日期控件等)。

一般下拉框功能有以下两个:

      1.菜单栏-点击其中的某个链接跳转

    2.对下拉列表的元素进行操作。

      下拉框选择都有select的标签属性,存在两个属性select和option。有的呈现的是下拉框样式但没有select属性的比如说或ul/li。

  

思路:

1.等待下拉列表和下拉列表出现

2.对下拉列表的元素进行操作

 

下拉框操作流程:

1.获取所有的下拉列表值,然后用循环去匹配相同的值;

2.通过text的内容来找到下拉列表的某个值

示例代码:

#等待下拉框元素出现后点击
WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[contains(text(),"课程")]')))
driver.find_element_by_xpath('//a[contains(text(),"课程")]').click()

 

3.如果是select/option组合,则可以使用Select类来处理。

示例代码:

from selenium.webdriver.common.action_chains import ActionChains
#1.实例化鼠标类
ac=ActionChains(driver)
#2.调用各种鼠标行为后,调用perform()来执行
ac.move_to_element_with_offset(driver.find_element_by_xpath('//div[@id="u"]/*[@name="tj_login"]')).perform()
from selenium.webdriver.support.ui import Select
#1.实例化select类
select=Select(driver.find_element_by_id("su"))
#2.根据下标来选择
select.select_by_index(2)
#3.根据option的value值来选择
select.select_by_visible_text("高级搜索")

  

以下是网上其他文章中介绍的。可以参考下:

     其类型有:

      ①单选下拉框,可以选择一个元素。

      ②多选下拉框,可以选择多个元素。

     定位方法:

      ①直接定位

      ②二次定位。先定位到select框,再定位到select选项。

      ③导入Select模块(推荐使用) -- 根据属性或者索引来定位。

         先要导入Select方法     from selenium.webdriver.support.ui import Select 。

         然后通过索引:s = driver.find_element_by_id('nr')

                                  Select(s).select_by_index(2)

         通过value值定位:s = driver.find_element_by_id('nr')

                                       Select(s).select_by_value('20')

         通过text值来定位:s = driver.find_element_by_id('nr')

                                        Select(s).select_by_visible_text('宝马')

下面附上ms.html代码截图:

       

 

通过selenium实现:

import time 

from selenium import webdriver

from selenium.webdriver.support.ui import Select    # 导入Select模块

# 指定驱动

driver = webdriver.Chrome(r"C:\webdriver\chromedriver.exe")

# 打开网址

driver.get('file:///C:/Users\Administrator/PycharmProjects/1120/web_driver/lesson3/ms.html')

# 获得相应的webElement

select = Select(driver.find_element_by_id('multi'))

# 先取消所有选择的选项

select.deselect_all()

# 根据text值定位

select.select_by_visible_text('雅阁')

select.select_by_visible_text('宝马 740')

# 获得相应的webElement

select = Select(driver.find_element_by_id('single'))

# 根据value值定位

select.select_by_value('male')

 

driver.quit()

posted @ 2020-03-12 21:20  吃个鱼丸  阅读(1926)  评论(0编辑  收藏  举报