《最新出爐》系列初窺篇-Python+Playwright自動化測試-28-處理日曆時間控制元件-上篇

宏哥發表於2023-11-15

1.簡介

我們在實際工作中,有可能遇到有些web產品,網頁上有一些時間選擇,然後支援按照不同時間段範圍去篩選資料,例如:我們預定火車票或者預定酒店,需要選擇發車日期或者酒店的入住與退房時間。宏哥早在之前的12306選出發站就簡單的提到過,只不過是一帶而過,今天就展開詳細介紹一下。網頁上日曆控制元件一般,是一個文字輸入框,滑鼠點選,就會彈出日曆介面,可以選擇具體日期。這一篇,宏哥就來介紹一下日曆控制元件是如何用Playwright實現自動化。

2.JQueryUI網站

2.1被測網址

1.被測網址的地址:

 https://jqueryui.com/resources/demos/checkboxradio/default.html

2.網頁如下圖:

3.思路一

宏哥這裡提供兩種思路,第一種:比較簡單將其看作是文字輸入框,直接按照日期格式輸入就可以了(馬上光棍節了,宏哥直接輸入23年的光棍節,湊巧啊,java+selenium的日曆時間控制元件篇也剛好要到雙十一了)。

3.1程式碼設計

根據第一種思路進行程式碼設計如下圖所示:

3.2參考程式碼

# coding=utf-8?

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

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2023-11-07
@author: 北京-宏哥   QQ交流群:705269076
公眾號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-28-處理日曆時間控制元件-上篇
'''

# 3.匯入模組
from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://jqueryui.com/resources/demos/datepicker/default.html")
    page.wait_for_timeout(5000)
    page.locator("#datepicker").fill("2023-11-11")
    page.wait_for_timeout(5000)
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

3.3執行程式碼

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

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

4.思路二

第二種:透過元素定位,和手工操作一樣,將日期一步一步選擇點選出來。

4.1程式碼設計

根據第二種思路進行程式碼設計如下圖所示:

4.2參考程式碼

# coding=utf-8?

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

# 2.註釋:包括記錄建立時間,建立人,專案名稱。
'''
Created on 2023-11-07
@author: 北京-宏哥   QQ交流群:705269076
公眾號:北京宏哥
Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-28-處理日曆時間控制元件-上篇
'''

# 3.匯入模組
from playwright.sync_api import Playwright, sync_playwright, expect

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://jqueryui.com/resources/demos/datepicker/default.html")
    page.wait_for_timeout(5000)
    # 點選輸入框
    page.locator("#datepicker").click()
    # 點選下一個月
    page.locator("//*[@id='ui-datepicker-div']/div/a[@data-handler='next']").click()
    page.wait_for_timeout(1000)
    # xpath定義第二行第六個元素,可能每個月排序不一樣,所以不一定點選的就是11日(2023 - 11 - 11)
    page.locator("//*[@id='ui-datepicker-div']/table/tbody/tr[2]/td[7]/a").click()
    page.wait_for_timeout(5000)
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

4.3執行程式碼

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

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

5.小結

好了,今天時間不早了,日曆控制元件上篇先介紹講解到這裡,後邊還有兩篇,感謝您耐心的閱讀!!!

相關文章