在UI自动化测试过程中,经常会遇到一些下拉框,如果我们基于Webdriver操作的话就需要click两次,而且很容易出现问题,实际上Selenium给我们提供了专门的Select(下拉框处理模块)。

1. 引用路径

from selenium.webdriver.support.select import Select

2.select包内的方法详解

1.获取option元素

options:获取包含select下拉框内所有option项element的列表

all_selected_options: 获取当前选中项element的列表

first_selected_option:获取所有下拉选项中的第一个选项的element(或者获取当前选中的这一项)

2.选择option

select_by_value(values):选择option标签中value属性为:values的选项

select_by_index(index_number):选择索引为index_number的选项(索引从0开始)

select_by_visible_text(text):选择option选项内容为:text的选项

3.复选select的情况(select标签中,multiple="multiple"时,即可多选的select选择框)

deselect_all:
取消所有已选择的选项

deselect_by_value(values):取消选择option标签中value属性为:values的选项

deselect_by_index(index_number):取消选择索引为index_number的选项(索引从0开始)

deselect_by_visible_text(text):取消选择option选项内容为:text的选项

3. 示例

from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://ui.imdsx.cn/html/#html')
driver.maximize_window() # 最大化网页
js = 'window.scrollTo(0,1800);' # 打开网页后,定位到某处
driver.execute_script(js) element = driver.find_element_by_xpath('//select[1]')
from selenium.webdriver.support.select import Select # 根据value进行操作
# 如果元素下还有子元素,可以继续通过find进行查找 # 通过选项的value属性值来定位
Select(element).select_by_value('') # ==》四川 # 过select选项的索引来定位选择对应选项(从0开始计数)
Select(element).select_by_index('') # ==》北京 # 通过选项的文本内容来定位
# ==》黑龙江,当输入不存在的text时,抛异常,提示没定位到这个元素
Select(element).select_by_visible_text('黑龙江12') # 获取所有下拉选项中的第一个选项的element(或者获取当前选中的这一项)
Select(element).first_selected_option # ==> 辽宁 # 返回所有选中的optionElement对象(获取当前选中项element的列表)
Select(element).all_selected_options # 取消所有选中的option
Select(element).deselect_all() # 通过option的index来取消对应的option
Select(element).deselect_by_index('') # 通过value属性,来取消对应option
Select(element).deselect_by_value('') # 通过option的文本内容,取消对应的option
Select(element).deselect_by_visible_text('')

最新文章

  1. 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)
  2. 2.bootstrap练习笔记-轮播图
  3. JavaScript中var关键字的使用详解
  4. hadoop常用命令
  5. Studying-Swift :Day01
  6. oracle系列--第五篇 PLSQL连接本地的Oracle数据库
  7. CSS规范之BFC & IFC
  8. java解析属性文件
  9. iOS 6编程Cookbook(影印版)
  10. HashMap循环遍历方式及其性能对比
  11. The Managed Metadata Service or Connection is currently not available
  12. FAQ:Python 断点调试
  13. 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
  14. 学习CSS记录:选择符优先级
  15. kaggle竞赛-保险转化-homesite
  16. 同步手绘板——android端取色
  17. maven本地库与私服比对,查找缺失jar包
  18. readv与writev
  19. 服务网关zuul之一:入门介绍
  20. jsp / get 中文乱码问题

热门文章

  1. 第一课android开发之在activity间传递参数
  2. LOJ #6042. 「雅礼集训 2017 Day7」跳蚤王国的宰相
  3. Net core 关于缓存的实现
  4. asp.net 文件分片上传
  5. Django(五)母版继承、Cookie、视图装饰器等
  6. es6中常用方法
  7. 怎么写自己的CMakeLists.txt
  8. BZOJ 1855 股票交易 (算竞进阶习题)
  9. python测试工程师高端基础面试题整理
  10. zabbix SNMP OID列表