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

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

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

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