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

Python中Playwright的常用操作方法分享

 更新時(shí)間:2023年05月09日 08:55:37   作者:田辛 | 田豆芽  
本文詳細(xì)介紹了Playwright的常用操作方法,包括獲取頁(yè)面元素、點(diǎn)擊按鈕和鏈接等。這些方法可以幫助開(kāi)發(fā)者更加高效地進(jìn)行自動(dòng)化測(cè)試和爬蟲(chóng)開(kāi)發(fā),需要的可以參考一下

本文詳細(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)文章

最新評(píng)論