前言
在测试时,有时会遇到单选框和复选框的操作。操作方式;先定位,再点击;复选框可以先判断再点击。
一、认识单选框和复选框
1.先认清楚单选框和复选框长什么样
2.单选框是圆的;复选框是方的
二、radio和checkbox源码
1.上图的html源码如下,把下面这段复制下来,写到文本里,后缀改成.html就可以了。
<html> <head> <meta http-equiv="content-type" content="text/html;charset=gbk" /> <title>单选和复选</title> </head> <body> </form> <h4>单选:性别</h4> <form> <label value="radio">男</label> <input name="sex" value="male" id="boy" type="radio"><br> <label value="radio1">女</label> <input name="sex" value="female" id="girl" type="radio"> </form> <h4>近期学习目标</h4> <form> <!-- <label for="c1">checkbox1</label> --> <input id="c1" type="checkbox">selenium<br> <!-- <label for="c2">checkbox2</label> --> <input id="c2" type="checkbox">python<br> <!-- <label for="c3">checkbox3</label> --> <input id="c3" type="checkbox">jmeter<br> <!-- <form> <input type="radio" name="sex" value="male" /> Male <br /> <input type="radio" name="sex" value="female" /> Female </form> --> </body> </html>
三、单选:radio,复选框:checkbox操作,定位方式也是八种元素定位方式
# coding:utf-8 from selenium import webdriver driver=webdriver.Chrome() driver.get("file:///C:/Users/Administrator/Desktop/1.html") driver.implicitly_wait(5) driver.find_element_by_id("boy").click() #单选框 driver.find_element_by_id("c1").click() #复选框
四、复选框全部勾选
1.全部勾选,可以用到定位一组元素,从上面源码可以看出,复选框的type=checkbox,这里key用xpath语法
# coding:utf-8 from selenium import webdriver driver=webdriver.Chrome() driver.get("file:///C:/Users/Administrator/Desktop/1.html") driver.implicitly_wait(5) c=driver.find_elements_by_xpath("//form/input[@type='checkbox']") for i in c: i.click()
2.这里注意,find_elements是不能直接点击的,它是复数的,所以只能先获取到所有的checkbox对象,然后通过for循环取一个个点击操作
五、判断是否选中:is_selected()
1.有时候这个选项框,本身就是选中状态,如果我再点击以下,它就反选了,这可不是我期望的结果,那么可不可以当它是没选中的时候,我去点击下;当它已经是选中状态,我就不点击呢?那么问题来了,如何判断选项框是选中状态?
2.判断元素是否选中这一步才是本文的核心内容,点击选项框对于大家来说没什么难度,获取元素是否为选中状态,打印结果
3.返回结果为bool类型,没点击时候返回False,点击后返回True,接下来就很容易判断了,既可以作为操作前的判断,也可以作为测试结果的判断。
参考代码:
# coding:utf-8 from selenium import webdriver import time driver=webdriver.Chrome() driver.get("file:///C:/Users/Administrator/Desktop/1.html") driver.implicitly_wait(5) #点击python driver.find_element_by_id("c2").click() #判断元素是否为选中状态,未选中是False,选中是True c1=driver.find_element_by_id("c1").is_selected() c2=driver.find_element_by_id("c2").is_selected() print(c1,c2)#False True time.sleep(3) #没有选中,则点击选中 if not c1: driver.find_element_by_id("c1").click() if not c2: driver.find_element_by_id("c2").click()