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()
Selenium测试form表单之下拉列表的更多相关文章
- qq邮箱问卷,测试不支持form表单
想做个类似苹果调查问卷的: 找到qq邮箱的代码编辑器: 写好我们的网页(h5) <!DOCTYPE html> <html lang="en"> <h ...
- jQuery Form 表单提交插件-----formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的 应用
一.jQuery Form的其他api 1. formSerialize 将表单序列化成查询串.这个方法将返回一个形如: name1=value1&name2=value2的字符串.是否可 ...
- 前端开发-4-HTML-table&form&表单控制 标签
1.table标签 <!DOCTYPE html> <html lang="cn"> <head> <meta charset=" ...
- Html form表单大全(一)
在前后端交互的过程中,除了ajax请求之外,最常见的就是表单请求了. 由于form表单属性多,表单标签内容多且复杂,不深究的话很难全面的弄明白. 接下来就来详细的说一说整个form表单都有些什么,并且 ...
- java:JavaScript2:(setTimeout定时器,history.go()前进/后退,navigator.userAgent判断浏览器,location.href,五种方法获取标签属性,setAttribute,innerHTML,三种方法获取form表单信息,JS表单验证,DOM对象,form表单操作)
1.open,setTimeout,setInterval,clearInterval,clearTimeout <!DOCTYPE> <html> <head> ...
- vue3 element-plus 配置json快速生成form表单组件,提升生产力近600%(已在公司使用,持续优化中)
️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...
- Django基础,Day5 - form表单投票详解
投票URL polls/urls.py: # ex: /polls/5/vote/ url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, ...
- react引用antd的form表单
引用form是第三方插件ant插件,官网网址:https://ant.design/.用到的antd的版本是@2.0.1.form(https://ant.design/components/form ...
- HTML table、form表单标签的介绍
1. <table>标签 1.1说明: 在HTML 中定义表格布局. 1.2格式: <table> <caption></caption> <tr ...
- form表单提交路径action="" 时的一种特殊情况
一.说明: 当页面的form表达的action=""时,表示表单会提交到当前页面,但是如果当前页面的URL里已经带有一个参数了,每次提交表达时这个参数依然存在,不管form表单里有 ...
随机推荐
- Vue-购物车实战
computed 计算属性 正则 css部分 [v-cloak] { display : none ; } table{ border : lpx solid #e9e9e9 ; border- co ...
- Blazor开发框架Known-V2.0.7
V2.0.7 Known是基于Blazor的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行. 官网:http://known.pumantech.com Gitee: https:/ ...
- MPTCP(一) :MPTCP概览
MPTCP概览 参考链接 MPTCP官网 http://multipath-tcp.org/ MPTCP入门 https://access.redhat.com/documentation/zh-cn ...
- bazel简介(二)——从makefile向bazel转变(使用genrule)
0x01 背景 上篇中已经介绍了bazel的基本工作原理和相关的概念.这篇将继续介绍下,现有的makefile构建工程如何切换到bazel构建系统. bazel提供了丰富的扩展方式,当然也支持从目前的 ...
- 短视频SDK 视频编辑SDK AE模版SDK 人体抠图SDK 绿幕抠图SDK
优势: 快速接入免费试用名称: 短视频SDK品牌: 蓝松SDK特色: 一站式视音频解决方案 杭州蓝松科技有限公司,多年来一直专注于音视频领域核心技术的研发.核心研发团队掌握的行业领先技术,目前 ...
- Ubuntu上snmp安装、配置、启动及远程测试完整过程
说明 关于一个完整的教程,还是那句话,国内的要么不完整,要么就太旧了,而且思路也不清晰,所以这里写一篇完整的给大家分享一下. 虽然对于Linux主机的监控可以通过执行特定的命令来完成,但是相比之后,通 ...
- LaTeX 编译 acmart 文档报错:hyperref must be loaded before hyperxmp.
在编译一篇从 arXiv 下载的文档时遇到如下错误: Package hyperxmp Error: hyperref must be loaded before hyperxmp. 根据 GitHu ...
- 如何高效的阅读paper--三遍阅读法
第一遍 1.阅读文章的标题.摘要和介绍 2.阅读每一节的标题和副标题 3.阅读总结 4.浏览参考文献,看看是否有曾经读过的文章 在完成第一遍后,应该做到: 1.能够说出该篇论文的类型 2.能够说出文章 ...
- LLM大模型基础知识学习总结
大家好,我是Edison. 在这个已经被AI大模型包围的时代,不了解一点大模型的基础知识和相关概念,可能出去聊天都接不上话.刚好近期我也一直在用GPT和GitHub Copilot,也刚好对这些基础知 ...
- Cookie的secure属性引起循环登录问题分析及解决方案
作者:来自 vivo 互联网服务器团队- Wang Fei 单点登录作为公共组件,在各个公司内部被各个系统所广泛使用,但是在使用过程中我们会遇到各种各样的问题,其中循环登录问题就是一个比较经典的问题. ...