Selenium测试form表单之下拉列表
处理form表单中的下拉列表,需要用到一个Selenium工具类-Select
一、Select工具类常用属性和方法
方法/属性 | 描述 | |
---|---|---|
1 | select_by_value() | 根据值选择 |
2 | select_by_index() | 根据索引选择 |
3 | select_by_visible_text() | 根据文本选择 |
4 | deselect_by_value | 根据值反选 |
5 | deselect_by_index() | 根据索引反选 |
6 | deselect_by_visible_text() | 根据文本反选 |
7 | deselect_all() | 反选所有 |
8 | options | 所有选项 |
9 | all_selected_options | 所有选中选项 |
10 | frist_selected_option | 第一个选择选项 |
二、form表单测试
1、下拉列表选项为单选时,定义from表单
(1)form表单代码
<select name="provise" id="provise"></select>
如下图所示,form表单中定义了一个单选城市的下拉列表
(2)测试用例
用例:选中不同选项
结果:可正常选中,各个选项互斥
自动执行测试用例代码:
利用Select类中三个不同方法实现:select_by_value(); select_by_index(); select_by_visible_text()
select.select_by_index(1)#根据索引值选中选项,index:0,1,2···
sleep(2)
select.select_by_value('bj')#根据值选中选项
sleep(2)
select.select_by_visible_text('TianJing')#根据可视化文本选中对象
sleep(2)
2、下拉列表选项为多选时,需多定义一个属性multiple
(1)form表单代码
<select name="provise" id="provise" multiple></select>
如下图所示,定义了一个可多选城市的form表单
(2)测试用例1
用例1:选中多个选项
结果1:可正常选中,各个选项不互斥
自动化执行测试用例代码:
通过索引遍历选项,逐个选中,用到的Select类方法是select_by_index():通过索引选中
#多选的情况下将选项全选
for i in range(3):
select.select_by_index(i)
sleep(1)
sleep(2)
也可以利用的是Select类中options属性,遍历options列表逐个点击
for option in select.options:
option.click()#点击选项
sleep(2)
sleep(2)
(3)测试用例2
用例2:反选所有选项
结果2:所有选项取消选中状态
自动化执行用例代码:
用到Select类中的deselect_all()方法
#反选全部
select.deselect_all()
sleep(2)
三、总代码
1、form表单定义
点击查看代码
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="javascript:alert('test')" >
provide:
<select name="provise" id="provise" multiple>
<option value="bj">BeiJing</option>
<option value="sh">ShangHai</option>
<option value="tj">TianJing</option>
</select>
</form>
</body>
</html>
2、form表单测试
点击查看代码
from selenium import webdriver
from time import sleep
import os
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
class Testcase(object):#继承object类
def __init__(self):
self.driver=webdriver.Edge()
path=os.path.dirname(os.path.abspath(__file__))
file_path ='file:///' + path + '/form2.html'
self.driver.get(file_path)#加载form表单
def test_select(self):
se=self.driver.find_element(By.ID,"provise")#定位元素
select=Select(se)#实例化Select对象,参数为WebElement对象
# select.select_by_index(1)#根据索引值选中选项,index:0,1,2···
# sleep(2)
# select.select_by_value('bj')#根据值选中选项
# sleep(2)
# select.select_by_visible_text('TianJing')#根据可视化文本选中对象
# sleep(2)
# #多选的情况下将选项全选
# for i in range(3):
# select.select_by_index(i)
# sleep(1)
# sleep(2)
#
# #反选全部
# select.deselect_all()
# sleep(2)
for option in select.options:
option.click()#点击选项
sleep(2)
sleep(2)
self.driver.quit()
if __name__=="__main__":
case=Testcase()
case.test_select()