Selenium基础 — 单选按钮和多选按钮的操作

2023-11-09

1、页面中的单选按钮和多选按钮

页面中的单选按钮和多选按钮样式如下图:


页面代码片段:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
</head>
<body>
<fieldset>
<legend>单选按钮radio</legend>
<form action="">
    <label for=""><input type="radio" name="fruit" value="pg" id="pg">苹果</label>
    <label for=""><input type="radio" name="fruit" value="jz" id="jz">橘子</label>
    <label for=""><input type="radio" name="fruit" value="xj" id="xj">香蕉</label>
    <label for=""><input type="radio" name="fruit" value="li" id="li" checked="">梨</label>
    <label for=""><input type="radio" name="fruit" value="xg" id="xg" disabled="" >西瓜</label>
</form>
</fieldset>
<br>
<fieldset>
<legend>多选按钮checkbox</legend>
<form action="">
    <input type="checkbox" name="checkbox" value="汽车" id="qc">汽车<br>
    <input type="checkbox" name="checkbox" value="购物" id="gw">购物<br>
    <input type="checkbox" name="checkbox" value="旅游" id="ly" readonly="">旅游 <br>
    <input type="checkbox" name="checkbox" value="音乐" id="yy" disabled="">音乐 <br>
</form>
</fieldset>
</body>
</html>

说明:

  • 单选按钮,默认选框为圆形,type属性值为type="radio"
  • 多选按钮,默认选框为方形,type属性值为type="checkbox"
  • 使用click()方法切换选框的状态:开/关(选中状态 or 未选中状态)。

2、判断按钮是否选中is_selected()

有时候选项框,本身就是选中状态,如果我再点击一下,它就取消选择了,这可不是我期望的结果,那么可不可以当它是没选中的时候,我去点击下,当它已经是选中状态,我就不点击。
如何判断选项框是选中状态?
我们可以通过is_selected()方法进行判断。
语法:

# 返回一个布尔值
元素对象.is_selected()

说明:
返回结果为bool类型,没点击时候返回False,点击后返回True,以后我们在操作单选按钮和多选按钮的时候,先判断按钮是否是选中状态,再根据业务需求进行操作。

3、单选按钮的操作

以上边页面代码片段为例:
示例:

"""
1.学习目标:
    掌握单选框操作
2.语法
    1.定位单选框,进行点击操作
        再进行一下点击操作,就是取消选择
    2.在点击之前,需要判断单选框是否被选中
        元素.is_selected()  # 判断元素是否被选中
3.需求
    在页面中,操作单选框
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)

# 4.单选框操作
# 4.1 定位单选框
# 定位选项前的按钮元素,不要定位文字
apple = driver.find_element_by_id("pg")

# 4.2 操作单选框
# 判断单选框是否被选中
if apple.is_selected():
    pass
else:
    # 单击一下,让单选按钮进入选中状态
    apple.click()
    sleep(2)

"""
注意:
被禁用的按钮是不能被操作的,
也就是按钮属性中有disabled=""。
单选按钮和多选按钮都是。
"""

# 5. 操作一组单选框
# 5.1定位所有的单选框
radios = driver.find_elements_by_css_selector("input[type='radio']")

# 5.2 遍历操作所有的单选框
for radio in radios:
    if radio.is_selected():
        pass
    else:
        radio.click()
        sleep(1)

# 5.关闭浏览器
driver.quit()

4、多选按钮的操作

实现步骤:

  1. 全部勾选,可以用到定位一组元素,通过复选框的type=checkbox等属性定位即可。
  2. find_elements是不能直接点击,它是复数获取的元素集,是一个列表,所以只能先获取到所有的checkbox对象,然后通过for循环去一个个点击操作。

以上边页面代码片段为例:
示例:

"""
1.学习目标:
    掌握复选框操作
2.语法
    2.1 定位复选框
    2.2 操作复选框
            判断复选框是否被选中
            元素.is_selected()
            再进行选择
3.需求
    在页面中,操作多选框
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
import os

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)

# 4. 复选框操作
# 操作单个复选框和操作单个单选框一样
car = driver.find_element_by_id("qc")
# 判断选框是否被选中
if car.is_selected():
    pass
else:
    # 单击一下,让单选按钮进入选中状态
    car.click()
    sleep(2)

# 5. 复选框全选
# 5.1 定位所有的复选框
checkboxes = driver.find_elements_by_name("checkbox")

# 5.2 遍历所有复选框,并且选择
for checkbox in checkboxes:
    if checkbox.is_selected():
        pass
    else:
        checkbox.click()
        sleep(1)

"""
注意:
被禁用的按钮是不能被操作的,
也就是按钮属性中有disabled=""。
单选按钮和多选按钮都是。
"""

# 5.关闭浏览器
driver.quit()

5、选择部分多选按钮的操作

写一种简单好理解的方式:

# 1.导入selenium
from selenium import webdriver
from time import sleep
import os

# 2.打开浏览器
driver = webdriver.Chrome()

# 3.打开页面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)

# 4. 选择部分多选框
# 建立列表填写将要选择的复选框名称
box_list = ["购物", "旅游"]

# 定位所有的复选框
checkboxes = driver.find_elements_by_name("checkbox")

# 遍历选择
for checkbox in checkboxes:
    # 判断获取到的复选框的名称和在需求勾选的复选框中
    if checkbox.get_attribute("value") in box_list:
        # 如果在,判断选框是否被选中
        if checkbox.is_selected():
            pass
        else:
            # 单击一下,让单选按钮进入选中状态
            checkbox.click()
            sleep(1)

"""
注意:
被禁用的按钮是不能被操作的,
也就是按钮属性中有disabled=""。
单选按钮和多选按钮都是。
"""

# 5.关闭浏览器
driver.quit()最好我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

最好我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了

1、学习思路和方法

这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习
 

2、想学习却无从下手,该如何学习?

这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。

3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....

4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

最后送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Selenium基础 — 单选按钮和多选按钮的操作 的相关文章

  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • 在 Python 中使用 Selenium 处理“接受 Cookie”弹出窗口

    我一直在尝试用硒抓取这个房地产网站的一些信息 但是 当我访问该网站时 我需要接受 cookie 才能继续 这仅在机器人访问网站时发生 而不是在我手动执行时发生 当我尝试通过 xpath 或 id 查找相应的元素时 正如我在手动检查页面时找到
  • 有没有好的方法来解析用户代理字符串?

    我有一个Java接收模块User Agent来自最终用户浏览器的字符串的行为需要略有不同 具体取决于浏览器类型 浏览器版本甚至操作系统 例如 FireFox 7 0 Win7 Safari 3 2 iOS9 我明白了User Agent由于
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 从java中的字符串数组中删除空值

    java中如何从字符串数组中删除空值 String firstArray test1 test2 test4 我需要像这样没有 null 空 值的 firstArray String firstArray test1 test2 test4
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 重写Object类的finalize()方法有什么用?

    据我所知 在java中如果我们想手动调用垃圾收集器 我们可以执行System gc 1 我们在重写的finalize 方法中做了哪些操作 2 如果我们想手动调用JVM垃圾收集器 是否需要重写finalize 方法 我们在重写的 Finali
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序

随机推荐

  • nginx反向代理服务,因配置文件错误导致访问资源时出现404

    最近测试手上的项目 出现访问服务器的资源出现404的错误 这个是不应该会出现的问题 因为在此之前经过测试是没问题 下面是详细情况 1 公司的服务器都是做过nginx反向代理 2 访问路径是在tomcat中配置过虚拟路径 3 前几天服务器有做
  • 数据挖掘及管理系统-机器学习和数据挖掘课程设计

    这学期做的一个课设 在web的基础上加入了简单的聚类算法 并将其可视化 采用springboot freemarker完成 可视化采用echarts 算是对自己学习web以来的转化实践吧 代码地址米其林餐厅数据挖掘管理系统 具体都在READ
  • 对比损失(Contrastive Loss)

    其中 W 是网络权重 Y是成对标签 如果X1 X2这对样本属于同一个类 Y 0 属于不同类则 Y 1 Dw 是 X1 与 X2 在潜变量空间的欧几里德距离 当Y 0 调整参数最小化X1与X2之间的距离 当Y 1 如果X1与X2之间距离大于m
  • 学java从0开始——记录1

    了解我的文章的知道我是学python的 对于java跟看天书一样 但是没办法生活所迫 兜兜转转开始学java 本次学习记录的是了解java语言特点和JAVA JDK环境变量配置 干不干货我不知道 但是我不记录我会忘 一 java语言特点 1
  • linux查看ssh连接数,查看linux中的TCP连接数

    一 查看哪些IP连接本机 netstat an 二 查看TCP连接数 1 统计80端口连接数 netstat nat grep i 80 wc l 2 统计httpd协议连接数 ps ef grep httpd wc l 3 统计已连接上的
  • Vscode 配置 matlab 环境

    文章目录 一 插件安装与配置 二 实例测试 在文章的开始 说明一下我所使用的是 matlab 2016a vscode 系统为 win10 vscode 可以去官网下载 VSCode中文网 Visual Studio Code中文官网 VS
  • Ubuntu18.04 编译安装 ZLMediaKit

    目录 1 下载ZLMediaKit项目代码 2 安装依赖 2 1 安装gcc编译器 2 2 安装cmake 2 3 安装依赖库 3 编译项目 4 运行 5 推流测试 6 使用url规则播放推流 7 参考 1 下载ZLMediaKit项目代码
  • ubuntu切换ssh的root用户登录

    编辑ssh的配置文件 命令 vim etc ssh sshd config 用光标向下翻 找到Authentication部分 找到 PermitRootLogin without password 并注释掉 然后加入 PermitRoot
  • Fiddler抓手机https请求包

    Fiddler 给手机设置代理并抓取https链接 注 有两部分fiddler设置和手机端设置 且配置完成后 使用时确保PC和手机连接同一WiFi 设置方法如下 1 上网搜索fiddler官方版下载 并安装完成后 开启fiddler 2 选
  • 如何收割流量红利?UB Store的直播电商“三宝”

    如何收割流量红利 UB Store的直播电商 三宝 随着消费者购物习惯的转变 网络渠道消费倚重不断增大 电商已成为企业营销的重要触点 电商的营销价值也在用户 平台属性 数据积淀和技术发展的共同促进下不断提升 据国家统计局和艾瑞统计数据显示
  • 【antlr】antlr语法中的fragment

    1 概述 grammar justDemo ID a z A Z
  • 【Freesql】实现动态分组(groupby)

    应用场景 分组条件是a b c d的任意组合 来自前端 前端选了 a就只分组a 选了 a b就分组a b 请问怎么用freesql写出来 select 部分也是来自前端 前端选了 a就只查a 选了 a b就只查a b select a b
  • ubuntu python3安装opencv_ubuntu中给python3安装opencv

    一 安装相关工具包 注意 以下3 4 5 6为可选项 根据需求安装 1 更新库 sudo apt get update sudo apt get upgrade 2 安装从源码构建opencv的相关工具 sudo apt get insta
  • flutter 更改CircleProgressIndicator的颜色

    在flutter中 CircleProgressIndicator 默认颜色为 主题设定的颜色 CircleProgressIndicator的参数有3种 value 0 1的浮点数 用来表示进度多少 valueColor 是animati
  • 云原生Docker搭建chemex资产管理系统

    这篇文章主要讲解如何使用Ubuntu系统安装Docker应用并且搭建Chemex资产管理系统 Chemex数据是存在数据库的 为了方便备份以及管理容器 可利用外部的数据库或者Docker搭建一个数据库出来 我这里就在Docker容器中创建一
  • python单选题考试题目大全

    在Python中要生成随机数 应该使用 A math 模块 B random模块 正确答案 C numpy 模块 D pygame 模块 关于函数的下列说法不正确的是 A 函数可以没有参数 B 函数可以有多个返回值 正确答案 C 函数可以没
  • edge浏览器 您的flash可能被禁用或者版本过低

    转自 http blog sina com cn s blog 540316260102xkp1 html 从Win 8开始 微软的Windows操作系统就已经将Flash Player内嵌 故对于Win 10系统使用微软默认的Edge浏览
  • C# Http文件上传-简单版

    C HttpClient public static async Task
  • servlet配置小程序服务器,servlet配置小程序服务器

    servlet配置小程序服务器 内容精选 换一换 微架构分析基于ARM PMU Performance Monitor Unit 事件 获得指令在CPU流水线上的运行情况 可以帮助用户快速定位当前应用在CPU上的性能瓶颈 因此用户便可以有针
  • Selenium基础 — 单选按钮和多选按钮的操作

    1 页面中的单选按钮和多选按钮 页面中的单选按钮和多选按钮样式如下图 页面代码片段 fieldset legend 单选按钮radio legend fieldset