不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:php-note.com  发布于:2022-02-25 10:18  分类:Python基础  编辑

首先导入Select模块:

from selenium import webdriver
from selenium.webdriver.support.select import Select

感兴趣的可以将鼠标指向Select,然后按住Ctrl鼠标单击,查看Select模块的源码,是如何定义封装Select的各个方法的。

1、Select提供了三种选择某一项的方法

  1. select_by_index               # 通过索引定位
  2. select_by_value               # 通过value值定位
  3. select_by_visible_text      # 通过文本值定位

注意事项:

index索引是从“0”开始;

value是option标签的一个属性值,并不是显示在下拉框中的值;

visible_text是在option标签中间的值,是显示在下拉框的值;

2、Select提供了三种返回options信息的方法

  1. options                         # 返回select元素所有的options
  2. all_selected_options      # 返回select元素中所有已选中的选项
  3. first_selected_options    # 返回select元素中选中的第一个选项

注意事项:

这三种方法的作用是查看已选中的元素是否是自己希望选择的:

  1. options:提供所有选项的元素列表;
  2. all_selected_options:提供所有被选中选项的元素列表;
  3. first_selected_option:提供第一个被选中的选项元素;

 3、Select提供了四种取消选中项的方法

  1. deselect_all                       # 取消全部的已选择项
  2. deselect_by_index             # 取消已选中的索引项
  3. deselect_by_value             # 取消已选中的value值
  4. 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"))

 

 

参考:

[荐]Selenium Select下拉框

https://www.cnblogs.com/hiyong/p/14163167.html