Python中Playwright的常用操作方法分享
本文詳細(xì)介紹了Playwright的常用操作方法,包括獲取頁(yè)面元素、點(diǎn)擊按鈕和鏈接、獲取標(biāo)簽頁(yè)、獲取元素屬性、設(shè)置超時(shí)、單擊元素、模擬鼠標(biāo)點(diǎn)擊和拖放操作等。這些方法可以幫助開發(fā)者更加高效地進(jìn)行自動(dòng)化測(cè)試和爬蟲開發(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)獲取所有的打開頁(yè)面。
## 獲得所有被打開的pages/tabs
opened_pages = context.pages
# 枚舉所有的打開頁(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)按和放開的操作。
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報(bào)錯(cuò)TypeError: ‘dict‘ object is not&
在Python開發(fā)的旅程中,報(bào)錯(cuò)信息就像是一個(gè)個(gè)路障,阻礙著我們前進(jìn)的步伐,而“TypeError: ‘dict’ object is not iterable”這個(gè)報(bào)錯(cuò),常常讓開發(fā)者們陷入困惑,那么,這個(gè)報(bào)錯(cuò)究竟是怎么產(chǎn)生的呢?又該如何有效地解決它呢?讓我們一起深入探討,找到解決問(wèn)題的方法2024-10-10
python 爬取吉首大學(xué)網(wǎng)站成績(jī)單
python簡(jiǎn)單爬蟲,爬取吉首大學(xué)成績(jī)單,學(xué)校的成績(jī)單居然不支持導(dǎo)出,太坑了,算個(gè)績(jī)點(diǎn)居然還要手打,我吐了.花2個(gè)多小時(shí)寫了此python程序來(lái)生成可方便求和平均的Excel文件,幫助JSU學(xué)子脫離手算煩惱...2021-06-06
numpy展平數(shù)組ndarray.flatten()詳解
這篇文章主要介紹了numpy展平數(shù)組ndarray.flatten()詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
python調(diào)用其他文件函數(shù)或類的示例
今天小編就為大家分享一篇python調(diào)用其他文件函數(shù)或類的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Python實(shí)現(xiàn)免費(fèi)音樂(lè)下載器
本文主要為大家介紹了通過(guò)Python實(shí)現(xiàn)的免費(fèi)音樂(lè)下載器,文中的示例代碼講解詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的小伙伴可以學(xué)習(xí)一下2021-12-12
python繪制已知點(diǎn)的坐標(biāo)的直線實(shí)例
今天小編就為大家分享一篇python繪制已知點(diǎn)的坐標(biāo)的直線實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07

