Cyan Blog Cyan Blog
首页
  • Java (opens new window)
  • JUC (opens new window)
  • JVM (opens new window)
  • Redis

    • Redis安装 (opens new window)
    • Redis基础 (opens new window)
    • Redis实战 (opens new window)
    • Redis集群安装 (opens new window)
    • Redis分布式缓存 (opens new window)
    • Redis多级缓存 (opens new window)
    • Redis原理 (opens new window)
  • 管理工具

    • Maven (opens new window)
    • Git (opens new window)
  • SSM

    • Spring (opens new window)
    • SpringBoot (opens new window)
    • Mybatis (opens new window)
    • MybatisPlus (opens new window)
  • 微服务

    • Docker (opens new window)
    • RabbitMQ (opens new window)
    • SpringCloud (opens new window)
    • Dubbo (opens new window)
    • MongoDB (opens new window)
    • Zookeeper (opens new window)
  • Java面试题 (opens new window)
  • JUC面试题 (opens new window)
  • JVM面试题 (opens new window)
  • Linux面试题 (opens new window)
  • SQL面试题 (opens new window)
  • Maven面试题 (opens new window)
  • Redis面试题 (opens new window)
  • SSM面试题 (opens new window)
  • SpringCloud面试题 (opens new window)
  • Linux (opens new window)
  • C++ (opens new window)
  • 数据库

    • MySQL (opens new window)
    • NoSQL (opens new window)
  • 软件测试

    • 软件测试 (opens new window)
  • 加密解密 (opens new window)
  • bilibili字幕提取 (opens new window)
  • 道理 (opens new window)
  • 关于博主

    • Github (opens new window)
    • CSDN (opens new window)
  • 关于本站

    • 如何搭建博客网站 (opens new window)
首页
  • Java (opens new window)
  • JUC (opens new window)
  • JVM (opens new window)
  • Redis

    • Redis安装 (opens new window)
    • Redis基础 (opens new window)
    • Redis实战 (opens new window)
    • Redis集群安装 (opens new window)
    • Redis分布式缓存 (opens new window)
    • Redis多级缓存 (opens new window)
    • Redis原理 (opens new window)
  • 管理工具

    • Maven (opens new window)
    • Git (opens new window)
  • SSM

    • Spring (opens new window)
    • SpringBoot (opens new window)
    • Mybatis (opens new window)
    • MybatisPlus (opens new window)
  • 微服务

    • Docker (opens new window)
    • RabbitMQ (opens new window)
    • SpringCloud (opens new window)
    • Dubbo (opens new window)
    • MongoDB (opens new window)
    • Zookeeper (opens new window)
  • Java面试题 (opens new window)
  • JUC面试题 (opens new window)
  • JVM面试题 (opens new window)
  • Linux面试题 (opens new window)
  • SQL面试题 (opens new window)
  • Maven面试题 (opens new window)
  • Redis面试题 (opens new window)
  • SSM面试题 (opens new window)
  • SpringCloud面试题 (opens new window)
  • Linux (opens new window)
  • C++ (opens new window)
  • 数据库

    • MySQL (opens new window)
    • NoSQL (opens new window)
  • 软件测试

    • 软件测试 (opens new window)
  • 加密解密 (opens new window)
  • bilibili字幕提取 (opens new window)
  • 道理 (opens new window)
  • 关于博主

    • Github (opens new window)
    • CSDN (opens new window)
  • 关于本站

    • 如何搭建博客网站 (opens new window)
  • 设计模式

  • 软件测试

  • 软件测试实验

    • 软件测试
    • WebDriver⭐⭐
    • 定位⭐⭐
    • 浏览器操作⭐
    • 元素基本操作⭐⭐
    • 模拟键鼠操作⭐⭐
    • 消息框操作⭐
    • 切换浏览器窗口⭐
    • SoftwareTest⭐
    • SoftwareTest
    • SoftwareTest
    • SoftwareTest
    • SoftwareTest
  • 计算机
  • 软件测试实验
2025-03-17
0
0

SoftwareTest

  • HTML里的下拉列表表示方式,一般来说分为两种情况:
    • 一种是标准下拉列表:标准的select标签下拉列表方式实现;
    • 另一种是组装下拉列表:非select类下拉框,比如ul-li方式实现,或div-span方式实现
标准下拉列表:<select>和<option>
    <select multiple="true">
    <option value="a">选项1</option>
    <option value:="b">选项2</option>
    <option value="c">选项3</option>
    <option value="d">选项4</option>
</select>
组装下拉列表:<ul>和<li>或<div>和</div>
<ul>
    <li>选项1</li>
    <li>选项2</li>
</ul>
<div>
    <span>选项1</span>
    <span>选项2</span>
</div>

方式一:利用下拉列表的专用操作类Select(更专业,更灵活,易用只适用于标准下拉列表不适用于组装下拉列表)

  • 步骤1、导入Select类
  • 步骤2、定位下拉列表
  • 步骤3、封装Select对象
  • 步骤4、调用方法完成操作或获得属性值

方式二:模拟手工操作过程(更直观易理解、适用广泛适用于组装下拉列表对于标准下拉列表,不建议使用)

  • 步骤1、点击下拉列表或移动鼠标到下拉列表
  • 步骤2、等待几秒
  • 步骤3、点击一个选项

对于select标记的下拉列表,selenium webdriver提供了专用类Select来处理,更专业,更灵活,易用。

  • 导入Select类:
    • from selenium.webdriver.support.select import Select
  • 定位下拉列表:html里select标记的页面元素
    • 变量1=driver..ind_element(By...,"..")→变量1数据类型是webelement
  • 封装Select对象:调用构造方法,得到该类型的对象实例
    • 变量2=Select(变量1)→变量2数据类型是Select
编号 方法名称 功能 参数说明
1* select_by_index(index) 通过索引定位 index是从0开始编号的索引号(int类型)
2 select_by_value("value") 通过value值定位 value是option标记的value属性值(str类型)
3* select_by_visible_text("text") 通过文本值定位 text是之间的文本值 (str类型)
4 deselect_all() 取消所有选项 无参
5 deselect_by_index(inde x) 取消对应index 选项 index是从0开始编号的索引号(int类型)
6 deselect_by_value("valu e”) 项 取消对应value选项
7 deselect_by_visible_text ("text") 取消对应文本选项 text是之间的文本值 (str类型)
  • 说明:deselect.…这几个方法,只适用于多选的下拉列表(html中select标记有multiple,属性信息就是支持多选的下拉列表),如果下拉框不支持多选,则抛出NotlmplementedError,如果不存在指定值的选项,则抛出NoSuchElementException

属性:可以通过Select对象实例直接获得这些属性的值

编号 属性名称 说明 属性值类型
1* first_selected_option 被选中的选项中的第一个 webelement
2 all_selected_options 所有已选中的选项 list
3 options 所有选项 list
<option value:="order.php?act=list">订单列表</option><!-- webelement对象 ->
<!--订单列表 webelement对象的text属性值->
s1=driver.find_element(By.ID,"category")
s2=Select(s1)
#s2.select_by_index(13)
#s2.select_by_visible_text("&NBSP&NBSP&NBSP&NBSP耳机")
s2.select_by_value("8")
#将降序改为正序
s3=driver.find_element(By.NAME,"order")
s4=Select(s3)
t1=s4.first_selected_option.text
if t1=="倒序":
s4.select_by_visible_text("正序")
#判断第一个排序规则下拉列表里的当前选项文本,如果包含“上架时间”,就从所有选项中选择文本内包含“价格”的选项。
s5=driver.find_element(By.NAME,"sort")
s6=Select(s5)
t1=s6.first_selected_option.text
if "上架时间" in t1:
	for o in s6.options:
		if"价格" in o.text
			s6.select_by_visible_text(o.text)
  • 小结
    • 专用操作类Select适用于:
      • 标准下拉列表:标准的select标签下拉列表方式实现
    • 模拟手工操作过程
      • 组装下拉列表:非select类下拉框,比如ul-li方式实现,或div-span方式实现
    • 指令
      • from selenium.webdriver.support.select import Select
      • 变量1=driver..ind_element(By...,"..") `→变量1数据类型是webelement
      • 变量2=Select(变量1)→变量2数据类型是Select
#软件测试
上次更新: 2025/5/19 20:55:20
SoftwareTest⭐
SoftwareTest

← SoftwareTest⭐ SoftwareTest→

最近更新
01
项目优化
05-06
02
项目优化
05-06
03
延迟消息
05-05
更多文章>
Theme by Vdoing | Copyright © 2025-2025 Cyan Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式