【基於Python的Selenium2自動化測試】07 - 定位單選框和複選框
阿新 • • 發佈:2019-01-12
文章目錄
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))
執行結果:
說明: 本文參考部落格 Selenium2+python自動化19-單選框和複選框(radiobox、checkbox)