1. 程式人生 > >【基於Python的Selenium2自動化測試】07 - 定位單選框和複選框

【基於Python的Selenium2自動化測試】07 - 定位單選框和複選框

文章目錄

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)