版权声明:本文为博主原创文章,未经博主允许不得转载。 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))
运行结果: