首先导入Select模块:
from selenium import webdriver from selenium.webdriver.support.select import Select
感兴趣的可以将鼠标指向Select,然后按住Ctrl鼠标单击,查看Select模块的源码,是如何定义封装Select的各个方法的。
1、Select提供了三种选择某一项的方法
- select_by_index # 通过索引定位
- select_by_value # 通过value值定位
- select_by_visible_text # 通过文本值定位
注意事项:
index索引是从“0”开始;
value是option标签的一个属性值,并不是显示在下拉框中的值;
visible_text是在option标签中间的值,是显示在下拉框的值;
2、Select提供了三种返回options信息的方法
- options # 返回select元素所有的options
- all_selected_options # 返回select元素中所有已选中的选项
- first_selected_options # 返回select元素中选中的第一个选项
注意事项:
这三种方法的作用是查看已选中的元素是否是自己希望选择的:
- options:提供所有选项的元素列表;
- all_selected_options:提供所有被选中选项的元素列表;
- first_selected_option:提供第一个被选中的选项元素;
3、Select提供了四种取消选中项的方法
- deselect_all # 取消全部的已选择项
- deselect_by_index # 取消已选中的索引项
- deselect_by_value # 取消已选中的value值
- deselect_by_visible_text # 取消已选中的文本值
注意事项:
在日常的web测试中,会经常遇到某些下拉框选项已经被默认选中,这种时候就需要用到这里所说的四种方法;
下面以实际的代码来做个示例,被测试网页与源码截图如下:
比如要选择3线,那么三种选择方法示例代码如下:
from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep # 登录 driver = webdriver.Chrome() ...... # 根据索引选择 Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_index("3") # 根据value值选择 Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_value("3线") # 根据文本值选择 Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_visible_text("3线") sleep(5) driver.quit()
以上就是关于selenium的Select模块提供的几种方法的用法,示例代码只是示例,具体实践还需要结合实际的工作需要来进行。。。
操作示例
比如要选择中文,那么三种选择方法示例代码如下:
1.先导入Select类
from selenium.webdriver.support.select import Select
2.再定位下拉选位置
lal=driver.find_element_by_id("language")
3.封装为Select对象,就可以使用Select对应的方法
lals=Select(lal)
也可以简写为:
Select(driver.find_element_by_id("language"))
4.选择一个选项的三种方法(文本/索引/value)
①通过页面显示的文本来选择
lals.select_by_visible_text("中文")
②通过索引号选择选项,索引号从0开始,是一个整数
lals.select_by_index(0)
③通过option标记的value属性值来选择选项,参数的类型是str
lals.select_by_value("zh-cn")
options属性:记录所有选项(包括被选中的和未被选中的),返回值是list类型,list里是option标记的页面元素对象,如果想获得某个选项的文本,需要从list里获取指定索引号的元素后,再使用text属性才能得到选项的文本
5.查看下拉选的所有选项
lalop=Select(driver.find_element_by_id("language")).options for a in options #循环遍历所有选项 print("语言选项有:%s" % a.text)
6.查看选中的选项
# 打印所选择的text值 print(Select(driver.find_element_by_id("language")).first_selected_option.text) # 打印所选择的value值 print(Select(driver.find_element_by_id("language")).first_selected_option.get_attribute("value"))
参考: