多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] 本篇主要介绍单选框和复选框的操作 ## 一、认识单选框和复选框 1. 先认清楚单选框和复选框长什么样 ![](https://img.kancloud.cn/c2/b2/c2b2f27fdc6c50d64b43f6187b7b6e7c_650x283.png) 2. 各位小伙伴看清楚哦,上面的单选框是圆的;下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了,可以先抽他了。 <br /> ## 二、radio和checkbox源码 ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>单选框和复选框</title> </head> <body> <h4>单选:性别</h4> <form> <label for="radio1">男</label> <input name="sex" value="male" id="boy" type="radio"><br /> <label for="radio2">女</label> <input name="sex" value="male" id="girl" type="radio"> </form> <h4>微信公众号:自动化测试</h4> <form> <input id="c1" type="checkbox">selenium<br /> <input id="c2" type="checkbox">python<br /> <input id="c3" type="checkbox">appium<br /> </form> </body> </html> ``` <br /> ## 三、单选:radio 1. 首先是定位选择框的位置 ![](https://img.kancloud.cn/e7/3c/e73c9b3b17d920c8f47b523e9438fdce_791x426.png) 2. 定位id,点击图标就可以了,代码如下(获取url地址方法:在浏览器url地址栏复制出地址就可以了) 3. 先点击boy后,等十秒再点击girl,观察页面变化 ``` # coding:utf-8 from selenium import webdriver import time url = "G:/py/selenium/test/selenium_day03/radio_and_checkbox.html" driver = webdriver.Chrome() driver.get(url) driver.find_element_by_id("boy").click() ``` <br /> ## 四、复选框:checkbox 1. 勾选单个框,比如勾选selenium这个,可以根据它的id=c1直接定位到点击就可以了 ``` # coding:utf-8 from selenium import webdriver import time url = "G:/py/selenium/test/selenium_day03/radio_and_checkbox.html" driver = webdriver.Chrome() driver.get(url) driver.find_element_by_id("c1").click() ``` 2. 那么问题来了:如果想全部勾选上呢? <br /> ## 五、全部勾选:     1.全部勾选,可以用到定位一组元素,从上面源码可以看出,复选框的type=checkbox,这里可以用xpath语法:.//\*\[@type='checkbox'\] ``` # coding:utf-8 from selenium import webdriver import time url = "G:/py/selenium/test/selenium_day03/radio_and_checkbox.html" driver = webdriver.Chrome() driver.get(url) # 复选框全选 checkboxs = driver.find_elements_by_xpath(".//*[@type='checkbox']") for i in checkboxs: if not i.is_selected(): i.click() ``` 2. 这里注意,敲黑板做笔记了:**find\_elements**是不能直接点击的,它是复数的,所以只能先获取到所有的checkbox对象,然后通过for循环去一个个点击操作 <br /> ## 六、判断是否选中:is_selected() 1. 有时候这个选项框,本身就是选中状态,如果我再点击一下,它就反选了,这可不是我期望的结果,那么可不可以当它是没选中的时候,我去点击下;当它已经是选中状态,我就不点击呢?那么问题来了:如何判断选项框是选中状态? 2. **判断元素是否选中这一步才是本文的核心内容**,点击选项框对于大家来说没什么难度。获取元素是否为选中状态,打印结果如下图。 3. 返回结果为bool类型,没点击时候返回False,点击后返回True,接下来就很容易判断了,既可以作为操作前的判断,也可以作为测试结果的判断 ![Snipaste_2020-08-17_16-20-22.png](https://i.loli.net/2020/08/17/wIVkuHAUOoBtjl4.png) <br /> 七、参考代码: ``` # coding:utf-8 from selenium import webdriver import time url = "G:/py/selenium/test/selenium_day03/radio_and_checkbox.html" driver = webdriver.Chrome() driver.get(url) # 没点击操作前,判断选项框状态 s = driver.find_element_by_id("boy").is_selected() print(s) driver.find_element_by_id("boy").click() # 点击后,判断元素是否为选中状态 r = driver.find_element_by_id("boy").is_selected() print(r) # 复选框单选 driver.find_element_by_id("c1").click() # 复选框全选 checkboxs = driver.find_elements_by_xpath(".//*[@type='checkbox']") for i in checkboxs: if not i.is_selected(): i.click() ```