《最新出爐》系列初窺篇-Python+Playwright自動化測試-25-處理單選和多選按鈕-中篇

1.簡介

上一篇中宏哥講解和介紹的單選框有點多,而且由於時間的關係,宏哥決定今天講解和分享複選框的相關知識。

2.什麼是單選框、複選框?

  單選按鈕一般叫raido button,就像我們在電子版的單選答題過程一樣,單選只能點擊一次,如果點擊其他的單選,之前單選被選中狀態就會變成未選中。單選按鈕的點擊,一樣是使用click方法。多選按鈕,就是複選框,一般叫checkbox,就像我們在電子版的多選答題過程一樣,可以選擇多個選項,多選按鈕的點擊,同樣是使用click方法。簡單地說,複選框可以允許你選擇多個設置,而單選框則允許你選擇一個設置。如下圖所示:

3.被測頁面html源代碼

3.1 radio.html

1.準備測試練習radio.html,如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>測試單選</title>
    <style type="text/css">
        .button1 {
            background-color: #f44336; 
            border: none;
            color: white;
            padding: 15px 32px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 28px;
            margin: 20px 300px 50px 300px;
            text-decoration:none;
            color: white;
        }
        #myAnchor
        {
          text-decoration:none;
          color: white;
        }
        #hg
        {
            margin: 20px 300px 50px 300px;
        }
    </style>
</head>
<body>
    <button class="button1"><a id="myAnchor" href="https://www.cnblogs.com/du-hong/">北京-宏哥</a></button></br>
    <div id="hg">
        <div>
        <h3>複選框 checkbox</h3> 請選擇喜歡的打野英雄:<br>
        <label><input name="checkbox1" type="checkbox" value="李白"/>李白 </label><br>
        <label><input name="checkbox2" type="checkbox" value="韓信"/>韓信 </label><br>
        <label><input name="checkbox3" type="checkbox" value="公孫離" checked="checked"/>公孫離 </label><br>
        <label><input name="checkbox4" type="checkbox" value="露娜"/>露娜 </label><br>
        </div>
        <div>
            <h3>單選框 radio</h3> 選擇喜歡的打野英雄:<br>
            <label><input name="radio" type="radio" value="0" checked="checked"/>李白 </label><br>
            <label><input name="radio" type="radio" value="1"/>韓信 </label><br>
            <label><input name="radio" type="radio" value="2"/>露娜 </label><br>
            <label><input name="radio" type="radio" value="3"/>孫尚香 </label><br>
        </div>
    </div>
</body>
</html>

2.頁面效果,如下圖所示:

上圖所示的就是我們最常見的radio單選框和checkbox多選框,playwright提供了一些處理單選框以及多選框的方法。宏哥接下來就一一介紹。

4.PlayWright選擇操作

playwright提供了一些處理單選框以及多選框的方法,如下:

  • locator.click() 點擊操作
  • locator.check() 選中
  • locator.uncheck() 不選中
  • locator.set_checked() 設置選中狀態
  • locator.is_checked() 判斷是否被選中

5.複選框操作

checkbox 複選框跟 radio 操作的區別在於,如果已經被選擇了,再點擊會被取消選中,所以不會有前面的報錯(宏哥在上一篇小結中提到的報錯)。以我們的html文件爲例,如果李白已經被選中了再點擊李白會改變狀態變成不選中了,我們只點擊其他的按鈕不會改變其狀態。

5.1click()點擊操作

宏哥這裏演示一下如何點擊“韓信”,其實是很簡單的,只需要定位到然後點擊即可。

5.1.1代碼設計

5.1.2參考代碼
# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.註釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-09-25
@author: 北京-宏哥   QQ交流羣:705269076
公衆號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-23-處理單選和多選按鈕-中篇
'''

# 3.導入模塊
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("C:/Users/DELL/Desktop/test/radio.html")
    page.wait_for_timeout(3000)
    # 選擇點擊 韓信
    page.locator('[value="韓信"]').click()
    page.wait_for_timeout(5000)
    # page.pause()
    browser.close()
5.1.3運行代碼

1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:

2.運行代碼後電腦端的瀏覽器的動作(可以看到默認選中“李白”,之後會點擊選中“韓信”)。如下圖所示:

5.2is_check() 檢查操作

5.2.1代碼設計

5.2.2參考代碼
# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.註釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-09-25
@author: 北京-宏哥   QQ交流羣:705269076
公衆號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-23-處理單選和多選按鈕-中篇
'''

# 3.導入模塊
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("C:/Users/DELL/Desktop/test/radio.html")
    page.wait_for_timeout(3000)
    #判斷 公孫離 是否被選中(html默認設置是選中的)
    status1 = page.locator('[value="公孫離"]').is_checked()
    print(status1)
    # 選擇 露娜
    page.locator('[value="露娜"]').click()
    print(page.locator('[value="露娜"]').is_checked())
    page.wait_for_timeout(5000)
    # page.pause()
    browser.close()
5.2.3運行代碼

1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:

2.運行代碼後電腦端的瀏覽器的動作。如下圖所示:

5.3check()和uncheck()操作

宏哥感覺check()和click的用法差不多。

5.3.1代碼設計

5.3.2參考代碼
# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.註釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-09-23
@author: 北京-宏哥   QQ交流羣:705269076
公衆號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-23-處理單選和多選按鈕-上篇
'''

# 3.導入模塊
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("C:/Users/DELL/Desktop/test/radio.html")
    page.wait_for_timeout(3000)
    # 選擇孫尚香
    page.locator('[value="3"]').check()
    print(page.locator('[value="3"]').is_checked())
    page.wait_for_timeout(5000)
    # page.pause()
    browser.close()
5.3.3運行代碼

1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:

2.運行代碼後電腦端的瀏覽器的動作。如下圖所示:

5.4set_checked()操作

注:set_checked()需傳checked 參數,參數爲布爾值。

5.4.1代碼設計

5.4.2參考代碼
# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.註釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-09-25
@author: 北京-宏哥   QQ交流羣:705269076
公衆號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-23-處理單選和多選按鈕-中篇
'''

# 3.導入模塊
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("C:/Users/DELL/Desktop/test/radio.html")
    page.wait_for_timeout(3000)
    # 選擇 韓信
    page.locator('[value="韓信"]').set_checked(checked=True)
    print(page.locator('[value="韓信"]').is_checked())
    page.wait_for_timeout(5000)
    # page.pause()
    browser.close()
5.4.3運行代碼

1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:

2.運行代碼後電腦端的瀏覽器的動作。如下圖所示:

5.5調用page對象

5.5.1用法
page.click('[value="李白"]')
page.check('[value="韓信"]')
page.set_checked('[value="露娜"]', checked=True)
5.5.2代碼設計

5.5.3參考代碼
# coding=utf-8🔥

# 1.先設置編碼,utf-8可支持中英文,如上,一般放在第一行

# 2.註釋:包括記錄創建時間,創建人,項目名稱。
'''
Created on 2023-09-25
@author: 北京-宏哥   QQ交流羣:705269076
公衆號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-23-處理單選和多選按鈕-中篇
'''

# 3.導入模塊
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto("C:/Users/DELL/Desktop/test/radio.html")
    page.wait_for_timeout(3000)
    # 演示,爲了看清選中,宏哥加了等待
    page.click('[value="李白"]')
    page.wait_for_timeout(5000)
    page.check('[value="韓信"]')
    page.wait_for_timeout(5000)
    page.set_checked('[value="露娜"]', checked=True)
    print(page.locator('[value="露娜"]').is_checked())
    page.wait_for_timeout(5000)
    # page.pause()
    browser.close()
5.5.4.運行代碼

1.運行代碼,右鍵Run'Test',控制檯輸出,如下圖所示:

2.運行代碼後電腦端的瀏覽器的動作。如下圖所示:

6.小結

 有沒有感覺到,單選框和複選框在Playwright中使用差不多,除了宏哥前一篇中提到的報錯,這一個唯一的區別,其他大致一樣。好了,今天時間也不早了,宏哥就講解和分享到這裏,感謝您耐心的閱讀,希望對您有所幫助。

歡迎各位體驗騰訊雲的Edge:https://cloud.tencent.com/developer/article/2346776

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章