在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('勾選框沒有選中')
這里安靜判斷沒有被選中的,可想而知,結果是“勾選框沒有選中”
安靜通過小小的例子,認識了什么是勾選框以及如何定位到勾選框和判斷勾選框是否選中的情況,最多的還是需要大家多寫多練,這樣才能孰能生巧。
安靜寫的文章如果對您有幫助,點個關注,持續更新。不懂的或者寫錯的地方,可以下方進行留言。