Selenium测试form表单之下拉列表

news/2025/1/24 22:32:26/文章来源:https://www.cnblogs.com/jongjongjong/p/18504335

处理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表单中定义了一个单选城市的下拉列表

image


(2)测试用例
用例:选中不同选项
结果:可正常选中,各个选项互斥
image


自动执行测试用例代码:
利用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表单
image


(2)测试用例1
用例1:选中多个选项
结果1:可正常选中,各个选项不互斥
image


自动化执行测试用例代码:
通过索引遍历选项,逐个选中,用到的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:所有选项取消选中状态
image


自动化执行用例代码:
用到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 Selectclass 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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/822981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.11.2

import string, random, collections x = string.ascii_letters + string.digits y = .join([random.choice(x) for i in range(1000)]) count = collections.Counter(y) for k, v in sorted(count.items()): print(k, :, v)

烧碱的节奏

三波起头 预示着三波回撤。

2.8

dict1 = {Alice: 123, Beth: 456, Cecil: abc} print(dict1[Alice]) dict1[new] = Hello dict1[Alice] = 1234 dict2 = {abc: 123, 456: 78.9} print(dict2[456])

2.9

Dict = {age: 18, score: [98, 97], name: zhang, sex: male} try: print(Dict[age]) print(Dict.get(age)) print(Dict.get(address, Not Exists.)) print(Dict[address]) except KeyError: print("健address在字典Dict中不存在")

argument、parameter以及option有什么区别

在程序设计和计算机科学中,”argument”、”parameter”和”option”这三个术语常常会被使用,而且它们之间存在着一些细微的区别:1、定义;2、使用场景;3、示例。在计算机编程中,”argument”或者称为”实参”,是在调用函数或方法时传递给函数或方法的值。”Parameter”或…

2.5

import os folder_path = (rD:\Programs\Python\Python37 ) fn = [filename for filename in os.listdir(folder_path) if filename.endswith((.exe, .py))] print(fn)

例2.3

L = [abc, 12, 3.45, python, 2.789] print(L) print(L[0]) L[0] = a L[1:3] = [b, Hello] print(L) L[2:4] = [] print(L) print(3029)

买了个mini主机当服务器

虽然有苹果的电脑,但是在装一些软件的时候,从想着能不能有一个小型的服务器,免得各种设置什么帮我强各种别的导致Mac出现各种的异常,整体上的话去看了一些小的主机,看过苹果的MV迷你Mac,但是发现是太贵了,大概要3000多,特别是要是是骄傲的话是需要 需要大概3000多,然后…

分享游戏安装包---明日之后

分享游戏安装包---明日之后 创建时间: 2024-1017 位置: 解压密码: 123456 怕和谐了 通过网盘分享的文件:明日之后-2024-1016更新 链接: https://pan.baidu.com/s/1G95PJo2QzWN3IM8K_h1xzw?pwd=sv3e 提取码: sv3e --来自百度网盘超级会员v6的分享1。版本号20241017 更新完…

CUDA编程学习 (3)——内存和数据定位

这段文字详细介绍了CUDA编程中的内存管理和数据定位。首先,强调了GPU的内存带宽与浮点计算能力之间的关系,指出性能瓶颈主要来源于内存访问的限制。接着,通过矩阵乘法的示例,展示了如何利用共享内存提高性能,介绍了内存类型(如全局内存、常量内存、寄存器和共享内存)及其…

C# 中的 public、static 和 void 关键字有什么区别

在C#编程语言中,public、static和void都是关键字,但它们具有不同的目的和用途。public是一个访问修饰符,表示类或类的成员可以从任何地方访问;static指定某一成员属于类型本身,而不是某个对象实例;而void是一个返回类型,表示方法不返回任何值。理解这三个关键字的核心差…

go高并发之路——本地缓存

一、使用场景 试想一个场景,有一个配置服务系统,里面存储着各种各样的配置,比如直播间的直播信息、点赞、签到、红包、带货等等。这些配置信息有两个特点: 1、并发量可能会特别特别大,试想一下,一个几十万人的直播间,可能在直播开始前几秒钟,用户就瞬间涌入进来了,那么…