处理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()

Selenium测试form表单之下拉列表的更多相关文章

  1. qq邮箱问卷,测试不支持form表单

    想做个类似苹果调查问卷的: 找到qq邮箱的代码编辑器: 写好我们的网页(h5) <!DOCTYPE html> <html lang="en"> <h ...

  2. jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用

    一.jQuery Form的其他api  1.  formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...

  3. 前端开发-4-HTML-table&form&表单控制 标签

    1.table标签 <!DOCTYPE html> <html lang="cn"> <head> <meta charset=" ...

  4. Html form表单大全(一)

    在前后端交互的过程中,除了ajax请求之外,最常见的就是表单请求了. 由于form表单属性多,表单标签内容多且复杂,不深究的话很难全面的弄明白. 接下来就来详细的说一说整个form表单都有些什么,并且 ...

  5. java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)

    1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...

  6. vue3 element-plus 配置json快速生成form表单组件,提升生产力近600%(已在公司使用,持续优化中)

    ️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农‍♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...

  7. Django基础,Day5 - form表单投票详解

    投票URL polls/urls.py: # ex: /polls/5/vote/ url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, ...

  8. react引用antd的form表单

    引用form是第三方插件ant插件,官网网址:https://ant.design/.用到的antd的版本是@2.0.1.form(https://ant.design/components/form ...

  9. HTML table、form表单标签的介绍

    1. <table>标签 1.1说明: 在HTML 中定义表格布局. 1.2格式: <table> <caption></caption> <tr ...

  10. form表单提交路径action="" 时的一种特殊情况

    一.说明: 当页面的form表达的action=""时,表示表单会提交到当前页面,但是如果当前页面的URL里已经带有一个参数了,每次提交表达时这个参数依然存在,不管form表单里有 ...

随机推荐

  1. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-64 - Canvas和SVG元素推拽

    1.简介 今天宏哥分享的在实际测试工作中很少遇到,比较生僻,如果突然遇到我们可能会脑大.懵逼,一时之间不知道怎么办?所以宏哥这里提供一种思路供大家学习和参考. 2.SVG简介 svg也是html5新增 ...

  2. Navicat 导入sql文件执行失败问题的处理

    之前有很多次用Navicat执行导出的sql文件,跑着跑着就批量报错,有的报错能看懂,有的报错压根就找不到,很长的记录中翻也不好翻. 现在用命令行执行的话,还是挺好使. 1进入mysql安装路径下的b ...

  3. Flutter&Dart Callback转同步

    前言 怎么将一个Callback回调转化成Future同步方法(Callback to Future),可以配套async / await去使用呢? 个人觉得,这是一个很常见的现象,不知道为啥,很多人 ...

  4. TGI 多-LoRA: 部署一次,搞定 30 个模型的推理服务

    你是否已厌倦管理多个 AI 模型所带来的复杂性和高成本? 那么, 如果你可以部署一次就搞定 30 个模型推理服务会如何? 在当今的 ML 世界中,哪些希望充分发挥其数据的价值的组织可能最终会进入一个& ...

  5. 关于phpstudy小坑 经典数据库报错 1044

    经典数据库报错  1044   权限问题 一个很经典的问题 使用的集成环境的phpstudy ,  一直都挺好的  但是每次删除后不能创建同名的数据库   最后发现原来默认的只有一个库  在这个库下面 ...

  6. 记一次list集合优化

    已知某个列表List1有2000条数据,但是因为这个列表的某个字段要从另一个表查询,所以根据一个关联的查询条件查出来的另一个List2有将近75000条数据,然后需要先循环第一个List1,然后循环里 ...

  7. PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024

    即插即用的PlugIR通过LLM提问者和用户之间的对话逐步改进文本查询以进行图像检索,然后利用LLM将对话转换为检索模型更易理解的格式(一句话).首先,通过重新构造对话形式上下文消除了在现有视觉对话数 ...

  8. python操作ipv6_用python开启临时http服务器及其ipv6支持

    https://blog.csdn.net/weixin_35647799/article/details/112023159

  9. opencv equalizeHist

    ''' What are histograms? Histograms are collected counts of data organized into a set of predefined ...

  10. Powershell 重新排列 Windows环境变量

    最近乱搞环境变量,然后有些重复了,遂写个脚本去重下排序下. 环境变量有长度限制,如果超出了,比如SqlServer相关的,将共同路径单独搞个变量声明下,比如 将其路径手动替换成如下,可大幅压缩变量长度 ...