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
- 专用操作类Select适用于:
上次更新: 2025/5/19 20:55:20