欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python寫UI自動(dòng)化之playwright(點(diǎn)擊操作)詳解

 更新時(shí)間:2025年02月15日 11:12:35   作者:電商人學(xué)python  
這篇文章主要介紹了Playwright庫中click()方法的參數(shù)及其使用場(chǎng)景,包括選擇器、修飾鍵、點(diǎn)擊位置、鼠標(biāo)按鈕、點(diǎn)擊次數(shù)、延遲、超時(shí)、強(qiáng)制點(diǎn)擊、試點(diǎn)擊和不等待導(dǎo)航等選項(xiàng),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

0. selector (必需)

類型: string

描述: CSS 選擇器或 XPath 表達(dá)式,用于定位要點(diǎn)擊的元素。

是必須提供的參數(shù),用于確定要點(diǎn)擊的元素。

1. modifiers(可選)

傳入一個(gè)列表,其中是鍵盤的按鍵操作,比如"Ctrl","Alt","Shift","win鍵"等

類型: Array<string>
描述: 一個(gè)字符串?dāng)?shù)組,用于指定要按下的修飾鍵??捎玫男揎楁I包括 "Shift", "Control", "Alt", "Meta"(代表 Command 鍵或 Windows 鍵)。
使用場(chǎng)景
模擬組合鍵點(diǎn)擊:如果需要模擬用戶同時(shí)按下 Shift 或 Control 鍵并點(diǎn)擊元素,可以使用 modifiers 參數(shù)。例如,模擬用戶按下 Ctrl 鍵并點(diǎn)擊鏈接以在新標(biāo)簽頁中打開鏈接。
模擬特殊操作:在某些情況下,需要模擬特殊的鍵盤操作。例如,在表格中按下 Ctrl 鍵并點(diǎn)擊單元格以選擇多個(gè)項(xiàng)。

from playwright.sync_api import Page
def test_pw_click(page: Page):
    page.goto(url='https://www.baidu.com')
    page.locator('//input[@name="wd"]').fill("日歷")
    page.get_by_text('百度一下').click(modifiers=["Control"]) #Control、Alt、Shift、Meta

2. position(可選)

傳入一個(gè)字典,{"x":10, "y": 20 },表示點(diǎn)擊位置距離元素左上角的偏移量??梢杂胋ounding_box()方法先查看這個(gè)元素的width和height,再確定自己點(diǎn)擊位置要偏移多少,偏移量不能超過這個(gè)元素的寬高范圍。當(dāng)被操作元素被遮罩時(shí),雖然playwright會(huì)自動(dòng)尋找可點(diǎn)擊位置,但是這樣顯示指定點(diǎn)擊位置會(huì)更精確一些

類型: { x: number, y: number }
描述: 指定相對(duì)于元素左上角的點(diǎn)擊位置。x 和 y 分別表示水平和垂直偏移量。
使用場(chǎng)景: 需要在元素內(nèi)部的特定位置點(diǎn)擊時(shí),可以使用 position 參數(shù)。這對(duì)于需要點(diǎn)擊元素內(nèi)的某個(gè)圖標(biāo)或按鈕的情況很有用。例如,如果有一個(gè)帶有下拉箭頭的按鈕,可能需要點(diǎn)擊箭頭而不是整個(gè)按鈕區(qū)域。

from playwright.sync_api import Page
def test_pw_click(page: Page):
    page.goto(url='https://www.baidu.com')
    page.locator('//input[@name="wd"]').fill("翻譯")
    page.get_by_text('百度一下').click()

     # 獲取元素位置
    page.get_by_text('百度首頁').bounding_box()
     # 返回示例:{'x': 1082, 'y': 24, 'width': 52, 'height': 24}
     # 表示這個(gè)元素在整個(gè)界面位置,以及元素本身的寬和高范圍大小

     # 點(diǎn)擊元素的特定位置
    page.click("#my-button", position={"x": 10, "y": 10})

3. button(可選)

可以模擬左鍵右鍵中間鍵點(diǎn)擊

類型: "left" | "right" | "middle"
描述: 指定要使用的鼠標(biāo)按鈕。默認(rèn)值為 "left"。
使用場(chǎng)景: 需要模擬右鍵點(diǎn)擊或其他類型的鼠標(biāo)按鈕點(diǎn)擊時(shí)使用。例如模擬右鍵點(diǎn)擊來打開上下文菜單。

from playwright.sync_api import Page
def test_pw_click(page: Page):
    page.goto(url='https://www.baidu.com')
    page.locator('//input[@name="wd"]').fill("翻譯")
    page.get_by_text('百度一下').click()
    
    page.get_by_text('百度首頁').click(button="right") #left左鍵 right右鍵 middle中鍵

4. click_count(可選)

傳點(diǎn)擊次數(shù),和delay參數(shù)結(jié)合使用

類型: number
描述: 指定點(diǎn)擊次數(shù)。默認(rèn)為 1,可以設(shè)置為 2 來模擬雙擊。
使用場(chǎng)景: 需要模擬雙擊或其他次數(shù)的點(diǎn)擊時(shí)使用。例如,雙擊文件列表中的文件來打開它。

page.locator('//input[@id="su"]').click(click_count=3,delay=3_000)

雙擊還有另一個(gè)方便的方法dblclick(),括號(hào)中的參數(shù)跟click()類似:

page.locator('//input[@id="su"]').dblclick()

5. delay

類型: number
描述: 設(shè)置兩次點(diǎn)擊之間的延遲時(shí)間(毫秒)。默認(rèn)為 0。
使用場(chǎng)景: 需要模擬用戶點(diǎn)擊時(shí)的自然延遲,比如在雙擊之間加入短暫的停頓,以模仿真實(shí)的用戶行為。

6. timeout(可選)

傳入超時(shí)時(shí)間

類型: number
描述: 設(shè)置最大等待時(shí)間(毫秒),超過此時(shí)間后將拋出超時(shí)錯(cuò)誤。默認(rèn)為 30000 毫秒(30 秒)。
使用場(chǎng)景: 當(dāng)你需要限制等待元素變得可點(diǎn)擊的時(shí)間。例如,在等待元素出現(xiàn)時(shí),你可能不想等待太長(zhǎng)時(shí)間。

page.get_by_text('#要點(diǎn)擊的元素').click(timeout=1_000) #超時(shí)時(shí)間,默認(rèn)30s

7. force=True(可選)

表示playwright auto-waiting機(jī)制中,當(dāng)設(shè)置 force=True 時(shí),即使元素被其他元素遮擋,Playwright 也會(huì)嘗試強(qiáng)制點(diǎn)擊該元素。這意味著即使有對(duì)話框或其他元素遮擋了目標(biāo)元素,Playwright 也會(huì)嘗試直接點(diǎn)擊目標(biāo)元素。

類型: bool
描述: 如果為 true,則強(qiáng)制點(diǎn)擊元素,即使它被遮擋。默認(rèn)為 false。
使用場(chǎng)景: 當(dāng)元素被其他元素遮擋時(shí),仍然需要點(diǎn)擊它。例如,如果一個(gè)按鈕被一個(gè)模態(tài)對(duì)話框遮擋,可能需要強(qiáng)制點(diǎn)擊該按鈕。

page.get_by_text('#需要點(diǎn)擊的元素').click(force=True)

8. trial=True(可選)

表示只進(jìn)行playwright auto-waiting的等待而不進(jìn)行click操作

類型: bool
描述: 如果為 true,則不執(zhí)行實(shí)際的點(diǎn)擊操作,而是僅嘗試查找元素并檢查是否可以點(diǎn)擊。默認(rèn)為 false。
使用場(chǎng)景: 需要驗(yàn)證元素是否可以點(diǎn)擊,但不執(zhí)行實(shí)際的點(diǎn)擊操作。例如,在測(cè)試準(zhǔn)備階段,你可能需要檢查頁面上的所有按鈕是否可點(diǎn)擊。

page.get_by_text('#要點(diǎn)擊的元素').click(trial=True) #點(diǎn)擊前檢查元素

9. no_wait_after(可選)

表示,一般情況下,如果click操作觸發(fā)了一個(gè)導(dǎo)航事件,那么pw會(huì)等待導(dǎo)航結(jié)束,但是這樣可能導(dǎo)致click一直未結(jié)束而失敗。這個(gè)就是為了避免這種情況發(fā)生。

類型: bool
描述: 如果為 true,則點(diǎn)擊后不等待頁面導(dǎo)航或資源加載完成。默認(rèn)為 false。
使用場(chǎng)景: 當(dāng)點(diǎn)擊操作不會(huì)導(dǎo)致頁面重新加載,而只是觸發(fā)一些異步操作(如 AJAX 請(qǐng)求)時(shí)。例如,如果點(diǎn)擊按鈕只是更新頁面的一部分內(nèi)容而不刷新整個(gè)頁面。

page.get_by_text('#要點(diǎn)擊的元素').click(no_wait_after=True) #點(diǎn)擊后不等待頁面加載

總結(jié)一下,playwright的click操作有這么幾步:

1.Auto-waiting機(jī)制,自動(dòng)等待元素到可以被成功點(diǎn)擊,除非設(shè)置了force=True

2.把元素滑動(dòng)到可以被點(diǎn)擊的地方

3.合并modifiers中的按鍵進(jìn)行點(diǎn)擊操作,除非設(shè)置了trial=True

4.等待可能的導(dǎo)航結(jié)束,除非設(shè)置了no_wait_after=True

注意事項(xiàng)

在使用 click 方法時(shí),確保元素是可見的并且在頁面上是可交互的。
使用 position 參數(shù)時(shí),請(qǐng)確保指定的坐標(biāo)位于元素的有效范圍內(nèi)。
使用 noWaitAfter 參數(shù)時(shí)要注意,如果不等待頁面加載完成,可能會(huì)影響后續(xù)的測(cè)試步驟。
使用 timeout 參數(shù)時(shí)要合理設(shè)置,過短的超時(shí)時(shí)間可能導(dǎo)致測(cè)試失敗,過長(zhǎng)則可能降低測(cè)試效率。

熟悉click()方法的這些參數(shù),我們可以根據(jù)需求精確地控制點(diǎn)擊行為,使自動(dòng)化測(cè)試更加可靠和高效。

總結(jié)

到此這篇關(guān)于Python寫UI自動(dòng)化之playwright的文章就介紹到這了,更多相關(guān)Python自動(dòng)化playwright點(diǎn)擊操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python語言描述隨機(jī)梯度下降法

    Python語言描述隨機(jī)梯度下降法

    這篇文章主要介紹了Python語言描述隨機(jī)梯度下降法,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • python tkinter 獲得按鈕的文本值

    python tkinter 獲得按鈕的文本值

    這篇文章主要介紹了python tkinter 獲得按鈕的文本值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python全棧知識(shí)點(diǎn)總結(jié)

    python全棧知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家整理了關(guān)于python全棧的知識(shí)點(diǎn)以及學(xué)習(xí)路線的總結(jié),需要的朋友們參考下。
    2019-07-07
  • python人工智能TensorFlow自定義層及模型保存

    python人工智能TensorFlow自定義層及模型保存

    這篇文章主要為大家介紹了python人工智能TensorFlow自定義層及模型保存示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Python中RSA加解密與數(shù)字簽名技術(shù)的使用

    Python中RSA加解密與數(shù)字簽名技術(shù)的使用

    本文將詳細(xì)介紹 RSA 數(shù)字簽名的原理、實(shí)現(xiàn)步驟,以及如何通過 Python 的 rsa 庫完成公鑰私鑰生成、數(shù)字簽名和認(rèn)證,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Flask實(shí)現(xiàn)的接口響應(yīng)中存在中文時(shí)接口返回為unicode亂碼的解決方法

    Flask實(shí)現(xiàn)的接口響應(yīng)中存在中文時(shí)接口返回為unicode亂碼的解決方法

    本文給大家分享了新版Flask實(shí)現(xiàn)的接口響應(yīng)中存在中文時(shí)接口返回為unicode亂碼的解決方法,文中通過代碼示例和圖文介紹的非常詳細(xì),如果有遇到相同問題的朋友,可以參考閱讀本文
    2023-11-11
  • 詳解Python如何實(shí)現(xiàn)Excel數(shù)據(jù)讀取和寫入

    詳解Python如何實(shí)現(xiàn)Excel數(shù)據(jù)讀取和寫入

    這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)對(duì)EXCEL數(shù)據(jù)進(jìn)行讀取和寫入,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • JupyterNotebook 如何調(diào)整輸出窗口的顯示效果

    JupyterNotebook 如何調(diào)整輸出窗口的顯示效果

    這篇文章主要介紹了JupyterNotebook 輸出窗口的顯示效果調(diào)整實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 詳解Django中ORM查詢的改進(jìn)方案與說明

    詳解Django中ORM查詢的改進(jìn)方案與說明

    這篇文章主要為大家詳細(xì)介紹了Django中ORM查詢的改進(jìn)方案與具體說明,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 使用npy轉(zhuǎn)image圖像并保存的實(shí)例

    使用npy轉(zhuǎn)image圖像并保存的實(shí)例

    這篇文章主要介紹了使用npy轉(zhuǎn)image圖像并保存的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評(píng)論