Selenium3+python3自动化(十六)--单选框和复选框(radiobox、checkbox)

前言

在测试时,有时会遇到单选框和复选框的操作。操作方式;先定位,再点击;复选框可以先判断再点击。

一、认识单选框和复选框

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

 

posted on 2020-08-30 11:47  星空6  阅读(505)  评论(0编辑  收藏  举报

导航