『心善淵』Selenium3.0基礎 — 14、Selenium對單選和多選按鈕的操作

繁華似錦Fighting發表於2021-07-04

1、頁面中的單選按鈕和多選按鈕

頁面中的單選按鈕和多選按鈕樣式,如下圖所示:

image

頁面程式碼片段

<!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)實現步驟

  1. 全部勾選,可以用到定位一組元素,通過核取方塊的type=checkbox等屬性定位即可。
  2. 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()

相關文章