selenium 复选框处理
在web自动化中,会遇到一些复选框的操作,在正常操作下,我们只要点击复选框即是勾选,再次点击则取消勾选,那selenium如何操作复选框呢? 其实和正常一样,我们只要定位到复选框后,就可以进行点击。
复选框
首先我们看下什么是复选框?复选框在HTML中长什么样子,这样才能方便我们进行定位操作。。
<html> <body> <form > <p>请选择你关注测试-安静了吗?</p> <p><input type="checkbox" name="vehicle" value="Bike" /> 已经关注了!/p> <p><input type="checkbox" name="vehicle" value="Car"/> 没有关注!</p> <p><input type="checkbox" name="vehicle" value="name"/> 已经关注,并跟着安静学习一段时间了</p> </form> </body> </html>
定位方法:
1、勾选一个:通过元素定位方式选择value值,然后进行定位进行点击操作
2、全部勾选:定位共同参数,通过find_elements的方法循环全部点击
思路就是定位到想要勾选的内容,然后直接点击就完事了,这里要属于find_elements不能直接点击,因为定位的是复数,selenium不知道点击哪一个,我们可以通过for循环进行点击
from selenium import webdriver import time driver = webdriver.Chrome() path = r'E:\web\checkbox.html' driver.get(path) # 定位全部复选框,然后进行循环点击 t = driver.find_elements_by_xpath('//*[@type="checkbox"]') for i in t: i.click() time.sleep(2) # 取消定位第一个 driver.find_element_by_css_selector('input[value=Bike]').click()
判断复选框是否选中
复选框,有的页面刚进去其实就已经勾选了,我们可以进行判断,如果勾选了,我们就直接进行下面的操作,哪么问题来了?我们如何判断元素是否被勾选?这里可以理解成元素是否被选中,哪么在selenium中是不是有个判断元素有没有被选中的方法? is_selected() 表示判断元素有没有被选中,如果选中打印True,没有选中打印False
from selenium import webdriver driver = webdriver.Chrome() path = r'E:\web\checkbox.html' driver.get(path) t = driver.find_element_by_css_selector('input[value=name]').click() # 判断是否被选中 if driver.find_element_by_css_selector('input[value=Bike]').is_selected(): print('复选框已经选中') else: print('复选框没有选中')
这里判断没有被选中的,可想而知,结果是“复选框没有选中”
原文链接:
https://www.cnblogs.com/qican/p/13534539.html