首页 > 其他分享 >Selenium测试form表单之下拉列表

Selenium测试form表单之下拉列表

时间:2024-10-27 23:11:30浏览次数:4  
标签:选项 form Selenium 表单 sleep 选中 select

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

标签:选项,form,Selenium,表单,sleep,选中,select
From: https://www.cnblogs.com/jongjongjong/p/18504335

相关文章

  • BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View阅读小
    BEVDet:High-PerformanceMulti-Camera3DObjectDetectioninBird-Eye-ViewBEVDet高性能多相机鸟瞰视图3D目标检测论文概述BEVDet是一种模块化设计的3D目标检测框架,以鸟瞰视图(Bird-Eye-View,BEV)执行3D目标检测,通过现有模块构建其框架,并通过定制数据增强策略和优化非......
  • Transformer模型中的attention结构作用是什么
    Transformer模型中的attention结构是一种突出重要特征的机制,它使模型能够关注输入序列中的不同部分。Attention结构的主要作用包括:1、捕捉长距离依赖关系;2、并行计算;3、提供全局上下文信息。其中,捕捉长距离依赖关系意味着模型能够理解句子中相隔较远的词汇之间的联系,从而增强了对......
  • Pyside6 布局管理器(5)--- QFormLayout的使用
    一、QFormLayout的介绍(官翻)QFormLayout是一个方便的布局类,它以两列的形式布局其子元素。左列由标签组成,右列由“字段”小部件(行编辑器、数字显示框等)组成。 传统上,这种两栏布局是通过使用QGridLayout实现的。QFormLayout是一种更高级别的替代方案,具有以下优点:遵守不同平台......
  • 推荐一个动态表单查询条件构造组件(yl-dc-component)
    什么是yl-dc-component一个基于antdv组件库的动态查询json生成组件,用于构建复杂的条件查询,让查询更加简单灵活。支持条件分组,保存历史条件等功能。后端可基于构造的json进行数据库查询操作。使用安装npmiyl-dc-component或yarnaddyl-dc-component案例<script......
  • transformer论文解读
    1.相关工作2.模型架构3.如何理解LayerNorm4.Encoder和Decoder结构5.从attention到ScaledDot-ProductAttention6.Multi-HeadAttention7.Transformer的三个multi-headattention的原理和作用8.Embedding和Softmax层9.PositionalEncoding10.为......
  • DYN / 消防局的设立 / Spread of Information / 将军令 题解
    前言四倍经验:[POI2011]DYN-Dynamite;[HNOI2003]消防局的设立;[ARC116E]SpreadofInformation;将军令。题意简述给你一棵\(n\)个结点的树和点集\(S\),你要选出\(k\)个关键点\(T\),求\(\min\max\limits_{u\inS}\min\limits_{v\inT}\operatorname{dis}(u,v)\)......
  • transformers 推理 Qwen2.5 等大模型技术细节详解(二)AutoModel 初始化和模型加载(免费
    接上文:transformers推理Qwen2.5等大模型技术细节详解(一)transformers包和对象加载老牛同学和大家通过Transformers框架的一行最常见代码fromtransformersimportAutoModelForCausalLM,走读了transformers包初始化代码的整个流程。从中体会到了dummy对象、LazyModule延迟......
  • Transformer 模型
            Transformer是一种基于自注意力机制的深度神经网络结构,由谷歌在2017年提出,最初应用于机器翻译任务。与传统的循环神经网络(RNN)不同,Transformer摒弃了序列依赖的结构,依靠自注意力机制全局建模输入序列中的依赖关系,极大提升了并行计算效率和捕捉长程依赖的能力......
  • 在 Kubernetes 中运行 Locust 与 Selenium:安装 Chrome 和 ChromeDriver
    在现代软件开发中,性能和用户体验是至关重要的,而负载测试和自动化测试可以帮助我们实现这一目标。在本文中,我们将讨论如何在Kubernetes环境中运行Locust和Selenium,并详细介绍如何安装Chrome和ChromeDriver。1.Dockerfile配置首先,我们需要创建一个Dockerfile,以构建一个......
  • 点跟踪论文—CoTracker: It is Better to Track Together使用Transform的时间与空间注
    CoTracker:ItisBettertoTrackTogether使用Transform的时间与空间注意力机制的密集点联合追踪算法详细解析文章概括总结:在之前学习的TrackingEverythingEverywhereAllatOnce(2023ICCV最佳学生论文)与RAFT:RecurrentAll-PairsFieldTransformsforOpticalF......