文章目录

  • 1、页面中的单选按钮和多选按钮
  • 2、判断按钮是否选中`is_selected()`
  • 3、单选按钮的操作
  • 4、多选按钮的操作
    • 实现步骤:
    • 示例:
  • 5、选择部分多选按钮的操作

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():passelse: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():passelse: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():passelse:# 单击一下,让单选按钮进入选中状态checkbox.click()sleep(1)"""
注意:
被禁用的按钮是不能被操作的,
也就是按钮属性中有disabled=""。
单选按钮和多选按钮都是。
"""# 5.关闭浏览器
driver.quit()

【心善渊Selenium3.0基础】— 15、Selenium中单选按钮和多选按钮的操作相关推荐

  1. 居善地,心善渊,动善时

    [一] 1.气不和时少说话,有言必失:心不顺时莫做事,做事必败. 2.事莫虚应,应则必办,不办便结怨:愿莫轻许,许愿必还,不还便成债. 3.万物在说法,看你如何着眼:一切是考验,试你如何用心. 4.知 ...

  2. 自动化测试基础篇--Selenium中数据参数化之TXT

    一.搜索参数化 在TXT文件中保存需要搜索的内容: 测试代码: 1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 #@File : txt.py 4 ...

  3. python selenium 点击加载更多_如何等待页面加载,然后按selenium中的“加载更多”按钮?...

    你可能会在页面底部看到谷歌广告.在from selenium import webdriver from selenium.webdriver.common.by import By from sel ...

  4. 教你怎么0基础学编程

    大家好,我是爱学习的老实人,学习使我快乐,赚钱使我兴奋. 在日常使用智能工具的时候,如果碰到一个非常好用的软件或者APP,不知道你有没有思考过这么好用的程序是怎么做出来的? 我劝你最好不要思考这个问题 ...

  5. python executescript_在selenium中一些相对常用的JavaScript事件

    输入框输入: 1.找到输入框的id,然后进行输入操作 ordinal :输入框的id parameter :需要输入的内容 browser.execute_script("document. ...

  6. 15年大厂经历!大佬总结:0基础如何学习Python?

    在学习之前,你一定要知道你的学习目标是什么. 现在市面上有太多人鼓吹"Python太火了"."Python第一".但是,注意,"火".&qu ...

  7. 《ActionScript 3.0基础教程》——1.4 对象参数

    本节书摘来自异步社区<ActionScript 3.0基础教程>一书中的第1章,第1.4节,作者: [美]Doug Winnie 更多章节内容可以访问云栖社区"异步社区" ...

  8. python一个月能学成嘛-0基础学Python,1个月写爬虫,走了哪些弯路?

    你是如何自学Python的? 今天我们来分享一位小伙伴的自学之路.当然,如果你没有任何编程基础,也将会和他一样走很多弯路,如果有条件希望你能够找到老师带领. 0基础小白的自学之路 首先介绍下我的背景, ...

  9. python降级pip_1.2 pip降级selenium3.0

    1.2 pip降级selenium3.051Testing软件测试网&SI+Y.A%M$M q selenium版本安装后启动Firefox出现异常:'geckodriver' executa ...

最新文章

  1. 电动车逆变器的基础知识
  2. 字节跳动 EB 级 HDFS 实践
  3. 4 命令_主梁建成、拾掇命令流(2019/4/10)
  4. 数据去重复_字典应用实例(每行每列都要去重复值)
  5. AndroidStudio取消撤销、AS取消撤销;Ctrl+Shift+Z;
  6. 论文浅尝 | Complex Embeddings for Simple Link Prediction
  7. STM8单片机低功耗---停机(Halt)模式实现
  8. 用jframe给MySQL输入数据_如何从JTextField输入Info到sql数据库?
  9. FFmpeg中AVFrame中width与linesize的关系
  10. XP系统访问win7共享文件夹教程和提示没有权限的解决办法
  11. puttygen convert ppk file to xshell key file
  12. 微信unionId和openId
  13. 电磁场理论-麦克斯韦方程组
  14. 【webrtc】基于libyuv的转换
  15. FTP命令详解(含操作实例)
  16. 微软中国总部半日游学小记
  17. 做游戏,学编程(C语言) 15 太鼓达人
  18. Android获取不到运动步数(踩坑)
  19. android 设备序列号_如何查找您的Android设备的序列号
  20. 自动驾驶汽车硬件与软件技术介绍

热门文章

  1. LINUX网络流量限速控制
  2. Microsoft Edge浏览器隐藏发现(Bing)按钮
  3. Myeclipse2017stable 2.0破解之旅
  4. python + selenium 爬取猎聘招聘网
  5. 多暂估的库存如何调整_​多暂估的库存如何调整
  6. emake-Linux学习20201011
  7. 新版itunes不显示图书_App Store构建版本iTunes不显示
  8. 【图片新闻】西科斯基公司将建造美国总统的新型海军一号直升机VH-92A
  9. 微信:支付验证签名失败
  10. Debezium报错处理系列之三十三:Unexpected error while connecting to MySQL and looking at BINLOG_FORMAT