Python中Playwright的常用操作方法分享
本文詳細(xì)介紹了Playwright的常用操作方法,包括獲取頁(yè)面元素、點(diǎn)擊按鈕和鏈接、獲取標(biāo)簽頁(yè)、獲取元素屬性、設(shè)置超時(shí)、單擊元素、模擬鼠標(biāo)點(diǎn)擊和拖放操作等。這些方法可以幫助開(kāi)發(fā)者更加高效地進(jìn)行自動(dòng)化測(cè)試和爬蟲(chóng)開(kāi)發(fā)。
1. Playwright獲得所有的Cookies
可以使用 BrowserContext.cookies() 方法來(lái)獲取特定的Cookie。如果沒(méi)有指定參數(shù),將返回所有Cookie。
# Get all cookies all_cookies = browser_context.cookies()
2. Playwright獲得所有的鏈接
可以使用page.locator()方法并指定a表達(dá)式來(lái)獲取頁(yè)面所有的鏈接。
page_elements = page.locator('a') print(f"{page_elements.count()} link/links are found.")
3. Playwright獲得包含特定字符串/文本的所有鏈接
使用page.locator()方法并指定 a:has-text() 表達(dá)式來(lái)獲取頁(yè)面的所有鏈接。
page_elements = page.locator('a:has-text("田辛老師")') print(f"{page_elements.count()} link/links are found.")
4. Playwright點(diǎn)擊按鈕
點(diǎn)擊按鈕的基本思路就是使用click()方法。
4.1 先定位元素
element = page.locator('input[name="goto_tdouya_homepage"]') element.click()
4.2 直接點(diǎn)擊
element = page.click('input[name="goto_tdouya_homepage"]')
5. Playwright點(diǎn)擊鏈接
和按鈕一樣, 主體思路還是使用click()方法。 注意, 和按鈕不同的是,link元素的定位需要選擇第一個(gè)元素。
5.1. 先定位元素
element = page.locator('a:has-text("goto_tdouya_homepage")').first element.click()
5.2 直接點(diǎn)擊
page.click('a:has-text("goto_tdouya_homepage") >> nth=0'
6.Playwright獲得所有的標(biāo)簽頁(yè)
現(xiàn)在的瀏覽器都是支持多個(gè)標(biāo)簽頁(yè)的。 那么我們可以采用BrowserContext.pages屬性來(lái)獲取所有的打開(kāi)頁(yè)面。
## 獲得所有被打開(kāi)的pages/tabs opened_pages = context.pages # 枚舉所有的打開(kāi)頁(yè)面的url for p in opened_pages: print(p.url)
7.Playwright獲取元素的所有屬性
可以使用locator.evaluate()方法執(zhí)行Javascript表達(dá)式, 獲取元素的所有屬性名。 并枚舉他們,并使用get_attribute()方法獲得每個(gè)屬性的值。
# 定位元素 element = page.locator('img_tdouya').first # 獲得所有的屬性 el_attrs = element.evaluate("el => el.getAttributeNames()") # 枚舉所有的屬性名稱和值 for attr in el_attrs: print(attr, ":", element.get_attribute(attr))
8.點(diǎn)擊時(shí)設(shè)置超時(shí)
雖然Playwright的超時(shí)要比Selenium友好的多。 但是,必要的時(shí)候也可以設(shè)置。 尤其是一些嚴(yán)苛環(huán)境下。
# timeout的單位是毫秒, 默認(rèn)值是30秒,也就是30000 page.click("#tdouyaButton", timeout=60000)
9.如果元素存在則單擊元素
在本小結(jié)中, 我們探索的情形是元素有可能存在有可能不存在。 整體思路是綜合利用上面提到過(guò)的page.locator()方法。檢查元素?cái)?shù)量。 如果大于0, 則進(jìn)行后續(xù)點(diǎn)擊操作。
# 獲得元素 elements = page.locator('a:has-text("田辛老師")') # 獲得元素?cái)?shù)量 link_number = elements.count() # 元素?cái)?shù)量大于0, 則進(jìn)行點(diǎn)擊操作 if link_number > 0: elements.first.click()
10.模擬鼠標(biāo)點(diǎn)擊
使用page.mouse.click()方法來(lái)點(diǎn)擊頁(yè)面中特定位置的元素。
page.mouse.click(1700, 1450)
11.拖放操作
使用page.mouse.move實(shí)現(xiàn)拖動(dòng), 使用page.mouse.up()、page.mouse.down()方法模擬鼠標(biāo)左鍵長(zhǎng)按和放開(kāi)的操作。
page.mouse.move(150, 150) page.mouse.down() page.mouse.move(300, 300) page.mouse.up()
到此這篇關(guān)于Python中Playwright的常用操作方法分享的文章就介紹到這了,更多相關(guān)Python Playwright內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python機(jī)器學(xué)習(xí)入門(二)之Python數(shù)據(jù)理解
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)入門知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Python實(shí)現(xiàn)PS圖像調(diào)整之對(duì)比度調(diào)整功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)PS圖像調(diào)整之對(duì)比度調(diào)整功能,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)PS圖像對(duì)比度調(diào)整的原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下2018-01-01python數(shù)據(jù)結(jié)構(gòu)之圖的實(shí)現(xiàn)方法
這篇文章主要介紹了python數(shù)據(jù)結(jié)構(gòu)之圖的實(shí)現(xiàn)方法,實(shí)例分析了Python圖的表示方法與常用尋路算法的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-07-07如何使用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換
這篇文章主要介紹了用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10Python爬蟲(chóng)包BeautifulSoup異常處理(二)
這篇文章主要為大家詳細(xì)介紹了Python爬蟲(chóng)包BeautifulSoup的異常處理,具有一定的參考價(jià)值,感興趣的朋友可以參考一下2018-06-06python 列表,數(shù)組和矩陣sum的用法及區(qū)別介紹
今天小編就為大家分享一篇python 列表,數(shù)組和矩陣sum的用法及區(qū)別介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06