【基于Python的Selenium2自动化测试】07 - 定位单选框和复选框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013003827/article/details/86309956

7.1 认识一下单选框和复选框

在这里插入图片描述

附:HTMLDemo源码

<html>  
    <head>  
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />  
    <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">java<br>  
        
    </body>  
</html>

说明: 将上述HTMLDemo源码复制到记事本中,并保存为html格式就可以了,注意,保存时选择UTF-8编码格式

7.2 勾选单选框

首先确定要勾选的对象:
在这里插入图片描述

【代码】

# coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/liXXXXX/Desktop/HTMLDemo.html")

# 定位单选框、勾选
driver.find_element_by_id("girl").click()

运行结果:
在这里插入图片描述

7.3 勾选复选框

7.3.1 勾选单个复选框

首先确定要勾选的对象:
在这里插入图片描述
【代码】

# coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/liXXXXX/Desktop/HTMLDemo.html")

# 定位单个复选框、勾选
driver.find_element_by_id("c2").click()

运行结果:
在这里插入图片描述

7.3.2 勾选全部复选框

直接上代码

# coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/liXXXXX/Desktop/HTMLDemo.html")

# # 定位单个复选框、勾选
# driver.find_element_by_id("c2").click()

# 定位全部复选框、勾选
checkboxs = driver.find_elements_by_xpath('//input[@type="checkbox"]')
for checkbox in checkboxs:
    checkbox.click()
    time.sleep(1)

# 打印当前页面上type=checkbox的个数
print("当前页面复选框的个数: %d" %(len(checkboxs)))
time.sleep(2)

运行结果:
在这里插入图片描述

在这里插入图片描述
注意:
(1)要全部勾选,需要定位到一组元素来定位到所有的复选框(使用 find_elements_by_XXX() 方法),如果使用 find_element_by_XXX()就会报以下错误:

TypeError: 'WebElement' object is not iterable

(2)find_elements_ 是不能直接点击的,它是复数的,所以只能先获取到所有的checkbox对象,然后通过for循环去一个个点击操作。

7.4 判断选中与否的状态

问题: 有时候某个选项框,本身就是选中状态,如果我再点击一下,它就变成反选了,这可不是我期望的结果!那么可不可以当它是没选中的时候,我去点击下;当它已经是选中状态,我就不点击呢?那么问题来了:如何判断选项框是否是选中状态?

解决: 这里用到一个判断方法:is_selected(),返回结果为bool类型,未选中返回False,选中后返回True。

以上面的python复选框为例:

# coding=utf-8
from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get("file:///E:/liXXXX/Desktop/HTMLDemo.html")
before_select = driver.find_element_by_id("c2").is_selected()
print("python复选框点击之前的状态:%s" %(before_select))
time.sleep(1)
driver.find_element_by_id("c2").click()
after_select = driver.find_element_by_id("c2").is_selected()
time.sleep(1)
print("python复选框点击之后的状态:%s" %(after_select))
driver.find_element_by_id("c2").click()
time.sleep(1)
after_after_select = driver.find_element_by_id("c2").is_selected()
print("python复选框再次点击之后的状态:%s" %(after_after_select))

运行结果:
在这里插入图片描述

说明: 本文参考博客 Selenium2+python自动化19-单选框和复选框(radiobox、checkbox)

猜你喜欢

转载自blog.csdn.net/u013003827/article/details/86309956