复选框checkbox和单选框radio是web网站里经常会使用到的两个控件,那么在web自动化测试的时候如何利用Selenium来操作这俩控件呢?今天我们就来简单入门练习一下!

html测试页面代码如下:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>学Python网 - selenium学习测试页面</title>
</head>
<body>
<h2>请选择你喜欢的开发语言</h2>
<form>
<p><input type="checkbox" id="c1" />C/C++</p>
<p><input type="checkbox" id="c2" />Java</p>
<p><input type="checkbox" id="c3" />Python</p>
<p><input type="checkbox" id="c4" />PHP</p>
<p><input type="checkbox" id="c5" />Golang</p>
</form>
<h2>您是否喜欢您现在的工作?</h2>
<form>
<p><input type="radio" name="lovework" value="love" id="rlove" />喜欢</p>
<p><input type="radio" name="lovework" value="hate" id="rhate" />不喜欢</p>
<p><input type="radio" name="lovework" value="none" id="rnone" />无所谓</p>
</form>
</body>
</html>

从HTML代码看,这里面的复选框checkbox和单选框radio都是input标签,那么我们可以遍历出所有的input标签元素了,而且这些元素也都有id,所以find_element_by_id和find_element_by_xpath操作单个元素也都是可行的。

Python代码练习:

# Autor: 5bug
# WebSite: http://www.XuePython.wang
# 学Python网QQ群: 643829693
from selenium import webdriver driver = webdriver.Chrome("C:/Users/5bug/AppData/Local/Google/Chrome/Application/chromedriver.exe")
driver.maximize_window()
driver.get('file:///E:\MyCodes\Python\demos\XuePython.wang\html\check_radio.html') #遍历得到checkbox/radio,并勾选指定的checkbox/radio
inputs = driver.find_elements_by_tag_name("input")
for input in inputs:
# 读取元素id
attr_id = input.get_attribute("id")
print(attr_id)
element_type = input.get_attribute("type")
if element_type == "checkbox":
#如果id在爱好的id数组内则勾选
if input.is_enabled() & (attr_id in ["c1", "c3"]) & (not input.is_selected()):
input.click()
elif element_type == "radio":
#勾选喜欢现在的工作选项
if (attr_id == "rlove") & input.is_enabled() & (not input.is_selected()):
input.click() 

这里用到了下面几个方法:

  • find_elements_by_tag_name根据标签名称获得元素列表

  • get_attribute获取某个属性

  • is_enabled方法是用于判断是否可用

  • is_selected方法是用于判断是否选中

  • is_displayed方法是用于判断是否显示

运行输出结果如下:

本文首发于学Python网:http://www.XuePython.wang

吾八哥学Selenium(三):操作复选框checkbox/单选框radio的方法的更多相关文章

  1. 吾八哥学Selenium(四):操作下拉框select标签的方法

    我们在做web页面自动化测试的时候会经常遇到<select></select>标签的下拉框,那么在Python里如何实现去操作这种控件呢?今天就给大家分享一下这个玩法.为了让大 ...

  2. 吾八哥学Python(三):了解Python基础语法(上)

    学习一门开发语言首先当然是要熟悉它的语法了,Python的语法还算是比较简单的,这里从基础的开始了解一下. 标识符1.第一个字符必须是字母表中字母或下划线'_'.2.标识符的其他的部分有字母.数字和下 ...

  3. 吾八哥学Selenium(二):操作输入框/按钮的方法

    一个web页面一定少不了输入框或者按钮这两种元素,那么在Python里如何使用Selenium操作web页面里的输入框和按钮呢?本文带你简单入门. 本文采用了一个例子,就是利用Selenium打开百度 ...

  4. 吾八哥学Selenium(一):Python下的selenium安装

    selenium简介 Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Firefox.Mo ...

  5. 【六】jquery之HTML代码/文本/值[下拉列表框、多选框、单选框的选中]

    val()方法不仅能设置元素的值,同时也能获取元素的值.另外,val()方法还有另外一个用处,就是它能使select(下拉列表框).checkbox(多选框)和radio(单选框)相应的选项被选中,在 ...

  6. selenium 操作复选框

    场景 从上一节的例子中可以看出,webdriver可以很方便的使用findElement方法来定位某个特定的对象,不过有时候我们却需要定位一组对象, 这时候就需要使用findElements方法. 定 ...

  7. 对jquery操作复选框

    摘要:jquery操作复选框.使用更简洁易懂,思路清晰,逻辑更明了,很实用 <!DOCTYPE html> <html> <head> <meta chars ...

  8. 【三石jQuery视频教程】02.创建 FontAwesome 复选框和单选框

    视频地址:http://v.qq.com/page/m/8/c/m0150izlt8c.html 大家好,欢迎来到[三石jQuery视频教程],我是您的老朋友 - 三生石上. 今天,我们要通过基本的H ...

  9. jQuery操作复选框checkbox技巧总结 ---- 设置选中、取消选中、获取被选中的值、判断是否选中等

    转载:https://blog.csdn.net/chenchunlin526/article/details/77448168 jQuery操作复选框checkbox技巧总结 --- 设置选中.取消 ...

随机推荐

  1. Execption:the database returned no natively generated identity value

    org.hibernate.HibernateException: The database returned no natively generated identity value at org. ...

  2. 怎样查看MYSQL数据库的端口号

    show variables like '%port%';

  3. vim批量注释

    vim批量注释 法一.在vim中 :20,30 s/^/#/g 20-30行 用 # 注释掉.(python是用#注释地---) :20,30 s/^#//g 20-30行 取消注释 法二. 1.多行 ...

  4. C语言的格式符

    转至:http://blog.csdn.net/zhanzheng520/article/details/10434791   一.格式符含义 1.d格式符:按十进制格式输出. %d          ...

  5. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.9 归一化Normaliation 训练神经网络,其中一个加速训练的方法就是归一化输入(normalize inputs). 假设我们有一个 ...

  6. Python CRM项目七

    仿照Django Admin实现对readonly的字段进行设置 功能点: 1.页面不可进行更改 2.如果改变html代码中的值,则需要进行后端的数据库数据校验 3.可以对某些字段进行自定制校验规则 ...

  7. WEB消息推送-原理篇

    这篇文章主要讲述B/S架构中服务器“推送”消息给浏览器.内容涉及ajax论询(polling),comet(streaming,long polling).后面会附上源代码. 最近在工作有这么一个需求 ...

  8. 安装Mercurial进行版本管理

    mercurial是又一个去中心化的版本管理软件,类似git 先介绍如何安装mercurial yum -y install mercurial mercurial需要一个用户名来记录commit动作 ...

  9. ABP官方文档翻译 6.1.2 MVC视图

    ASP.NET MVC 视图 介绍 AbpWebViewPage基类 介绍 ABP通过Abp.Web.Mvc nuget包集成到MVC视图.你可以如往常一样创建正常的MVC视图. AbpWebView ...

  10. BZOJ 4518: [Sdoi2016]征途 [斜率优化DP]

    4518: [Sdoi2016]征途 题意:\(n\le 3000\)个数分成m组,一组的和为一个数,求最小方差\(*m^2\) DP方程随便写\(f[i][j]=min\{f[k][j-1]+(s[ ...