1、頁面中的單選按鈕和多選按鈕
頁面中的單選按鈕和多選按鈕樣式,如下圖所示:
頁面程式碼片段:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
</head>
<body>
<fieldset>
<legend>單選按鈕radio</legend>
<form action="">
<label for=""><input type="radio" name="fruit" value="pg" id="pg">蘋果</label>
<label for=""><input type="radio" name="fruit" value="jz" id="jz">橘子</label>
<label for=""><input type="radio" name="fruit" value="xj" id="xj">香蕉</label>
<label for=""><input type="radio" name="fruit" value="li" id="li" checked="">梨</label>
<label for=""><input type="radio" name="fruit" value="xg" id="xg" disabled="" >西瓜</label>
</form>
</fieldset>
<br>
<fieldset>
<legend>多選按鈕checkbox</legend>
<form action="">
<input type="checkbox" name="checkbox" value="汽車" id="qc">汽車<br>
<input type="checkbox" name="checkbox" value="購物" id="gw">購物<br>
<input type="checkbox" name="checkbox" value="旅遊" id="ly" readonly="">旅遊 <br>
<input type="checkbox" name="checkbox" value="音樂" id="yy" disabled="">音樂 <br>
</form>
</fieldset>
</body>
</html>
說明:
- 單選按鈕,預設選框為圓形,
type
屬性值為type="radio"
。 - 多選按鈕,預設選框為方形,
type
屬性值為type="checkbox"
。 - 使用
click()
方法切換選框的狀態:開/關(選中狀態 or 未選中狀態)。
2、判斷按鈕是否選中is_selected()
有時候選項框,本身就是選中狀態,如果我再點選一下,它就取消選擇了,這可不是我期望的結果,那麼可不可以當它是沒選中的時候,我去點選下,當它已經是選中狀態,我就不點選。
如何判斷選項框是選中狀態?
我們可以通過is_selected()
方法進行判斷。
語法:
# 返回一個布林值
元素物件.is_selected()
說明:
返回結果為
bool
型別,沒點選時候返回False,點選後返回True,以後我們在操作單選按鈕和多選按鈕的時候,先判斷按鈕是否是選中狀態,再根據業務需求進行操作。
3、單選按鈕的操作
以上邊頁面程式碼片段為例:
示例:
"""
1.學習目標:
掌握單選框操作
2.語法
1.定位單選框,進行點選操作
再進行一下點選操作,就是取消選擇
2.在點選之前,需要判斷單選框是否被選中
元素.is_selected() # 判斷元素是否被選中
3.需求
在頁面中,操作單選框
"""
# 1.匯入selenium
from selenium import webdriver
from time import sleep
import os
# 2.開啟瀏覽器
driver = webdriver.Chrome()
# 3.開啟頁面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)
# 4.單選框操作
# 4.1 定位單選框
# 定位選項前的按鈕元素,不要定位文字
apple = driver.find_element_by_id("pg")
# 4.2 操作單選框
# 判斷單選框是否被選中
if apple.is_selected():
pass
else:
# 單擊一下,讓單選按鈕進入選中狀態
apple.click()
sleep(2)
"""
注意:
被禁用的按鈕是不能被操作的,
也就是按鈕屬性中有disabled=""。
單選按鈕和多選按鈕都是。
"""
# 5. 操作一組單選框
# 5.1定位所有的單選框
radios = driver.find_elements_by_css_selector("input[type='radio']")
# 5.2 遍歷操作所有的單選框
for radio in radios:
if radio.is_selected():
pass
else:
radio.click()
sleep(1)
# 5.關閉瀏覽器
driver.quit()
4、多選按鈕的操作
(1)實現步驟:
- 全部勾選,可以用到定位一組元素,通過核取方塊的
type=checkbox
等屬性定位即可。 find_elements
是不能直接點選,它是複數獲取的元素集,是一個列表,所以只能先獲取到所有的checkbox
物件,然後通過for
迴圈去一個個點選操作。
以上邊頁面程式碼片段為例:
(2)示例:
"""
1.學習目標:
掌握核取方塊操作
2.語法
2.1 定位核取方塊
2.2 操作核取方塊
判斷核取方塊是否被選中
元素.is_selected()
再進行選擇
3.需求
在頁面中,操作多選框
"""
# 1.匯入selenium
from selenium import webdriver
from time import sleep
import os
# 2.開啟瀏覽器
driver = webdriver.Chrome()
# 3.開啟頁面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)
# 4. 核取方塊操作
# 操作單個核取方塊和操作單個單選框一樣
car = driver.find_element_by_id("qc")
# 判斷選框是否被選中
if car.is_selected():
pass
else:
# 單擊一下,讓單選按鈕進入選中狀態
car.click()
sleep(2)
# 5. 核取方塊全選
# 5.1 定位所有的核取方塊
checkboxes = driver.find_elements_by_name("checkbox")
# 5.2 遍歷所有核取方塊,並且選擇
for checkbox in checkboxes:
if checkbox.is_selected():
pass
else:
checkbox.click()
sleep(1)
"""
注意:
被禁用的按鈕是不能被操作的,
也就是按鈕屬性中有disabled=""。
單選按鈕和多選按鈕都是。
"""
# 5.關閉瀏覽器
driver.quit()
5、選擇部分多選按鈕的操作
寫一種簡單好理解的方式,學習編碼思路。
# 1.匯入selenium
from selenium import webdriver
from time import sleep
import os
# 2.開啟瀏覽器
driver = webdriver.Chrome()
# 3.開啟頁面
url = "file:///" + os.path.abspath("./1.html")
driver.get(url)
sleep(2)
# 4. 選擇部分多選框
# 建立列表填寫將要選擇的核取方塊名稱
box_list = ["購物", "旅遊"]
# 定位所有的核取方塊
checkboxes = driver.find_elements_by_name("checkbox")
# 遍歷選擇
for checkbox in checkboxes:
# 判斷獲取到的核取方塊的名稱和在需求勾選的核取方塊中
if checkbox.get_attribute("value") in box_list:
# 如果在,判斷選框是否被選中
if checkbox.is_selected():
pass
else:
# 單擊一下,讓單選按鈕進入選中狀態
checkbox.click()
sleep(1)
"""
注意:
被禁用的按鈕是不能被操作的,
也就是按鈕屬性中有disabled=""。
單選按鈕和多選按鈕都是。
"""
# 5.關閉瀏覽器
driver.quit()