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)实现步骤

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

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

(2)示例

"""
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()

『心善渊』Selenium3.0基础 — 14、Selenium对单选和多选按钮的操作的更多相关文章

  1. 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍

    目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...

  2. 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作

    目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...

  3. 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件

    目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...

  4. 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍

    目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...

  5. 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)

    目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...

  6. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  7. 『心善渊』Selenium3.0基础 — 23、Selenium元素等待

    目录 1.什么是元素等待 2.为什么要设置元素等待 3.Selenium中常用的等待方式 4.强制等待 5.隐式等待 (1)隐式等待介绍 (2)示例 6.显式等待 (1)显式等待介绍 (2)语法 (3 ...

  8. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  9. 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载

    目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...

随机推荐

  1. CSS元素的盒类型

    一.css简介 CSS是Cascading Style Sheet的缩写,中文称层叠样式表.HTML中的元素都有着自己的属性和默认样式,CSS控制HTML内标签显示不同布局样式.控制对应html标签颜 ...

  2. openstack总结复习

    一.云计算概念 1.云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 通过互联网进入可配置的计算资源共享池(资源包括网络,计算,存储,应用软件,服务) 2.云计算所包含的几 ...

  3. python基础之错误、调试(异常处理)

    在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的. 有的错误是用户输入造成的,比如让用 ...

  4. iowait 的常见误解

    转自:理解 %IOWAIT (%WIO):http://linuxperf.com/?p=33   %iowait 是 "sar -u" 等工具检查CPU使用率时显示的一个指标,在 ...

  5. 痞子衡嵌入式:关于i.MXRT中FlexSPI外设lookupTable里配置Normal read的一个小误区

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT中FlexSPI外设lookupTable里配置Normal read的一个小误区. 关于串行四线NOR Flash,当其作 ...

  6. skynet debug console 使用

    预读 关于如何使用 skynet 可以参考 wiki 文档 更多实战内容见 https://www.lanqiao.cn/courses/2770 优惠码:2CZ2UA5u 环境测试搭建 使用示例代码 ...

  7. [ Java面试题 ]Java 开发岗面试知识点解析

    如背景中介绍,作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向. 在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几个部分: Java 基础知识点 Jav ...

  8. Python+Selenium - iframe定位

    元素在iframe中.在html当中,内嵌了另一个html (iframe) 分辨元素是否在iframe当中 在代码当中,从当前的html切换到iframe当中的html,然后在元素定位 切换方式:d ...

  9. NVIDIA深度架构

    NVIDIA深度架构 本文介绍A100 GPU,NVIDIA Ampere架构GPU的重要新功能. 现代云数据中心中运行的计算密集型应用程序的多样性推动了NVIDIA GPU加速的云计算的爆炸式增长. ...

  10. 目标检测中特征融合技术(YOLO v4)(下)

    目标检测中特征融合技术(YOLO v4)(下) ASFF:自适应特征融合方式 ASFF来自论文:<Learning Spatial Fusion for Single-Shot Object D ...