复选框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. PHP的CI框架流程基本熟悉

    CI框架是PHP的一个快速开发框架,我是目前的公司项目后台语言用的PHP,因为我做前端开发,需要用php去填充页面数据,所以就开始去了解这个框架,学习了一些php和数据库的东西,这篇文章先具体介绍CI ...

  2. Linux开机时停在 Starting sendmail 不动了的解决方案

    目前遇到这个问题,是在修改了/etc/hosts之后,但停止在Starting sendmail后5分钟就进去了.以后再长时间进入不了系统,可以参考下面的方法. 造成这个问题一般是因为用户修改了机器名 ...

  3. mysql与nagios的结合使用

    一. 对mysql建库建表,并测试数据 基本信息:库名:nh_nagios表名:nagios_alerts [root@nhserver2 ~]# mysql -u root -pEnter pass ...

  4. Linux学习笔记一

    本文记录了Linux中常用的一些东西. 命令生效顺序 第一顺位执行绝对路径或者相对路径的命令 第二顺位执行别名 第三顺位执行Bash的内部命令 第四顺位执行按照$PATH环境变量设置定义的目录顺序的第 ...

  5. CentOS7下 Java、Tomcat、MySQL、Maven热部署

    本文介绍了CentOS7 64位下Java.Tomcat.MySQL.Maven热部署等服务器环境的搭建和调试过程. 学生服务器资源获取方法: 云+校园计划 - 腾讯云 阿里云云翼计划 github ...

  6. 编译和解释性语言和python运行方式

    1.编译型语言和解释性语言 编译型语言:在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了.程序执行效率高,依赖编译器,跨平台性差些.如C. ...

  7. jquery 中json数组的操作 增删改

    1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...

  8. 关于Java中equal 和 == 的区别

    在对Java开发还不熟练的时候,往往很多人都喜欢用==去比较两个对象是否相等,有时候就会出现很奇葩的问题. 其实这类问题并不是奇葩问题,只是我们不够细心而已,在Java中“==”比较两个变量本身的值, ...

  9. I/O模型简述

    1. 前言 最近在学习 Java NIO 方面的知识,为了加深理解.特地去看了 Unix/Linux I/O 方面的知识,并写了一些代码进行验证.在本文接下来的一章中,我将通过举例的方式向大家介绍五种 ...

  10. Yii的Relational Active Record三张表连接查询

    需求如下: 查询book表信息,同时关联entitystags表,以entitystags的字段eid关联book的主键,再关联查询tags表,以entitystags表的tid字段关联tags表的主 ...