1.簡介
按理說,現在這種一閃而過的toast的已經相當普及或者是見怪不怪了,應該網上的大網站會用到的,偶然的在一次租房中,看到了這種場景,所以宏哥決定將其拿來主義,進行演示實踐一下。
2.租房網站
事先宣告啊,宏哥沒有收他們的廣告費啊,純粹是為了學習和實戰的。
2.1被測網址
1.被測網址的地址:
https://login.anjuke.com/login/form?history=aHR0cHM6Ly9iZWlqaW5nLmFuanVrZS5jb20v
2.網頁如下圖:
3.專案實戰
今天就利用上邊的實際網站,進行講解和演示一下,同時來鞏固一下前邊的知識,溫故而知新。
3.1程式碼設計
3.2參考程式碼
# coding=utf-8🔥 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2023-12-09 @author: 北京-宏哥 公眾號:北京宏哥 Project: 《最新出爐》系列初窺篇-Python+Playwright自動化測試-36-處理web頁面定位toast-下篇 ''' # 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("https://login.anjuke.com/login/form?history=aHR0cHM6Ly9iZWlqaW5nLmFuanVrZS5jb20v") page.wait_for_timeout(2000) # 操作 iframe 上的元素 frame = page.frame_locator("iframe[id^=iframeLoginIfm]") # xpath 匹配 frame.locator('[id="phoneIpt"]').fill('13617831920') frame.locator('[id="smsIpt"]').fill('666666') frame.locator('[id="checkagree"]').click() frame.locator('[id="smsSubmitBtn"]').click() #page.pause() #toast_text = page.locator('[className="toast"]').inner_text() toast_text = frame.get_by_text('請獲取驗證碼') page.wait_for_timeout(3000) #page.pause() print("Toast text is",toast_text.inner_text()) context.close() browser.close() with sync_playwright() as playwright: run(playwright)
3.3執行程式碼
1.執行程式碼,右鍵Run'Test',控制檯輸出,如下圖所示:
2.執行程式碼後電腦端的瀏覽器的動作。如下圖所示:
4.小結
這裡宏哥再次提醒小夥伴或者童鞋們,要注意iframe的陷阱,否則定位一輩子也定位不到元素,還有就是要注意iframe裡toast的定位方法。宏哥用了xpath和className不好使,想必各位從宏哥註釋的程式碼就可以看出了,最後實在不行了,就用了text的定位。而且這個元素比較***鑽,就一個className,其他的什麼屬性都沒有。也可能與Iframe的出現有關係吧。。。
好了,今天時間也不早了,宏哥就講解和分享到這裡,感謝您耐心的閱讀,希望對您有所幫助。