《最新出爐》系列初窺篇-Python+Playwright自動化測試-36-處理web頁面定位toast-下篇

宏哥發表於2023-12-27

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的出現有關係吧。。。

好了,今天時間也不早了,宏哥就講解和分享到這裡,感謝您耐心的閱讀,希望對您有所幫助。

相關文章