单选框和复选框(radiobox、checkbox)

单选框和复选框(radiobox、checkbox)

前言

网页上有时候遇到checkbox和radio,一般情况下这两种都是input标签,我们可以通过点击或者发送空格的方式进行选中。

一、认识单选框和复选框

1.先认清楚单选框和复选框长什么样

2.各位小伙伴看清楚哦,上面的单选框是圆的;下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了,可以先抽他了。

二、radio和checkbox源码

1.上图的html源码如下,把下面这段复制下来,写到文本里,后缀改成.html就可以了。

单选和复选

单选:性别


微信公众号:从零开始学自动化测试

selenium

python

appium

三、单选:radio

1.首先是定位选择框的位置

2.定位id,点击图标就可以了,代码如下(获取url地址方法:把上面源码粘贴到文本保存为.html后缀后用浏览器打开,在浏览器url地址栏复制出地址就可以了)3.先点击boy后,等两秒再点击girl,观察页面变化

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time

driver = webdriver.Chrome()

driver.get("file:///C:/Users/Cherry/Desktop/testtest.html")

time.sleep(1)

driver.find_element_by_id("boy").click() # 点击

# driver.find_element_by_id("boy").send_keys(Keys.SPACE) #发送空格

time.sleep(2)

driver.find_element_by_id("girl").click()

# driver.find_element_by_id("girl").send_keys(Keys.SPACE)

四、复选框:checkbox

1.勾选单个框,比如勾选selenium这个,可以根据它的id=c1直接定位到点击就可以了

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get("file:///C:/Users/Cherry/Desktop/testtest.html")

time.sleep(1)

driver.find_element_by_id("c1").click()

# time.sleep(1)

# driver.find_element_by_id("c2").click()

# time.sleep(1)

# driver.find_element_by_id("c1").click()

2.那么问题来了:如果想全部勾选上呢?

五、全部勾选

1.全部勾选,可以用到定位一组元素,从上面源码可以看出,复选框的type=checkbox,这里可以用xpath语法:.//*[@type='checkbox']

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get("file:///C:/Users/Cherry/Desktop/testtest.html")

time.sleep(1)

s = driver.find_elements_by_css_selector("input[type='checkbox']") # css定位

s = driver.find_elements_by_xpath("//input[@type='checkbox']") #xpath定位

for i in s:

i.click()

2.这里注意,敲黑板做笔记了:find_elements是不能直接点击的,它是复数的,所以只能先获取到所有的checkbox对象,然后通过for循环去一个个点击操作。

六、判断是否选中:is_selected()

1.有时候这个选项框,本身就是选中状态,如果我再点击一下,它就反选了,这可不是我期望的结果,那么可不可以这样:当它是没选中的情况下,我去点击下;当它已经是选中状态,我就不点击呢?那么问题来了:如何判断选项框是选中状态?2.判断元素是否选中这一步才是本文的核心内容,点击选项框对于大家来说没什么难度。获取元素是否为选中状态,代码如下。3.返回结果为bool类型,没点击时候返回False,点击后返回True,接下来就很容易判断了,既可以作为操作前的判断,也可以作为测试结果的判断。

from selenium import webdriver

import time

driver = webdriver.Chrome()

driver.get("file:///C:/Users/Cherry/Desktop/testtest.html")

# 没点击操作前,判断选项框状态

loc1 = driver.find_element_by_id("boy").is_selected()

print(loc1)

driver.find_element_by_id("boy").click()

# 点击后,判断元素是否为选中状态

loc2 = driver.find_element_by_id("boy").is_selected()

print(loc2)

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import time

driver = webdriver.Chrome()

driver.get("file:///C:/Users/Cherry/Desktop/testtest.html")

s = driver.find_elements_by_css_selector("input[type='checkbox']")

s[2].click() # 试验下:先把appium选项勾选上,然后等待一秒观察结果

# s[2].send_keys(Keys.SPACE)

time.sleep(1)

for i in s:

# i.click() # 直接循环勾选的话,原先已经勾选了的appium选项就会被取消

# 点击操作前,先判断选项框状态

if not i.is_selected(): # 若是没有勾选的,就勾选上;已勾选上的,不作处理

i.click()

# i.send_keys(Keys.SPACE)

当然,选中和判断是否选中还有其他的方法,如模拟鼠标点击、用js选中、修改标签属性选中;用js、jQuery判断是否选中、用标签属性判断是否选中,不过针对大部分情况,以上方法足够用了。如果以上方法失效,可以考虑直接修改或获取标签属性,或者可能是其他因素如等待时间、页面遮挡等导致无法选中,可进行更多尝试。

🖌️ 相关文章

海防“物”语 |东海龙王(广德王)庙
日博365在线

海防“物”语 |东海龙王(广德王)庙

📅 07-13 👁️ 821
CKD是什么意思,慢性肾脏病知识普及
日博365在线

CKD是什么意思,慢性肾脏病知识普及

📅 08-04 👁️ 8696
和天下和大重九哪个好抽
Bet体育365提款要多久2022

和天下和大重九哪个好抽

📅 07-25 👁️ 9325