国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Playwright 入門詳細(xì)教程

這篇具有很好參考價(jià)值的文章主要介紹了Playwright 入門詳細(xì)教程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

playwright的python文檔

安裝

pip install playwright

# 安裝驅(qū)動(dòng), 支持的瀏覽器:cr, chromium, ff, firefox, wk 和 webkit
playwright install

控制臺(tái)啟動(dòng)錄制

playwright codegen [options] [url]
  • -o, --output :保存生成腳本
  • –target :生成的腳本語(yǔ)言,可以設(shè)置javascript, test, python, python-async和csharp,默認(rèn)為python
  • -b, --browser :要使用的瀏覽器,可以選擇cr, chromium, ff, firefox, wk和webkit,默認(rèn)chromium。
  • –channel :chromium版本,比如chrome, chrome-beta, msedge-dev等
  • –color-scheme :模擬器的顏色主題,可選擇light 或者 dark樣式
  • –device :模擬的設(shè)備
  • –save-storage :保存上下文狀態(tài),用于保存cookies 和localStorage,可用它來(lái)實(shí)現(xiàn)重用。例如playwright codegen --save-storage=auth.json
  • –load-storage :加載–save-storage 保存的數(shù)據(jù),重用認(rèn)證數(shù)據(jù)。
  • –proxy-server :指定代理服務(wù)器
  • –timezone
  • –geolocation :指定地理位置坐標(biāo)
  • –lang :指定語(yǔ)言/地區(qū),比如中國(guó)大陸:zh-CN
  • –timeout :超時(shí)時(shí)間,定位毫秒,默認(rèn)10000ms
  • –user-agent :用戶代理
  • –viewport-size :瀏覽器窗口大小
  • -h, --help :查看幫助信息

例如:

playwright codegen -o test_playwright.py --target python  -b chromium --device="iPhone 12 Pro" https://www.baidu.com/

playwright open https://www.baidu.com/ # 默認(rèn)使用Chromium打開(kāi)
playwright wk https://www.baidu.com/ # 使用WebKit打開(kāi)
playwright open --device="iPhone 12 Pro" https://www.baidu.com/ # 使用iPhone 12 Pro模擬器打開(kāi)

基本用法

常見(jiàn)配置參數(shù)

headless,slow_mo,viewport,locale,timezone,color_scheme,geolocation,user_agent, timeout, proxy

同步模式

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
	# 創(chuàng)建一個(gè)瀏覽器實(shí)例; headless:是否無(wú)頭;slow_mo放慢執(zhí)行速度
	
	# pixel_2 = playwright.devices['Pixel 2']  # Pixel 2 一款安卓手機(jī)
	proxy_ip = {
            'server': 'http://',
            'username': '',
            'password': '',
        }
    browser = p.chromium.launch(headless=False, slow_mo=100, proxy=proxy_ip)
	context = browser.new_context(
            viewport={'width': 1800, 'height': 800},	# 窗口大小
            locale='zh-CN',  #語(yǔ)言zh-CN/en-EN
            timezone='Europe/Rome',   #時(shí)區(qū)
            color_scheme='dark',	# 顏色
            geolocation={"longitude": 48.858455, "latitude": 2.294474} # 地理位置
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36', # 瀏覽器,
            timeout=10000, # 超時(shí)
            # **pixel_2,
        )
	
    # 創(chuàng)建兩個(gè)瀏覽器上下文
    page = browser.new_page()
    page.goto('http://www.baidu.com')
    print(page.title)
    browser.close()

異步模式

import asyncio
from playwright.async_api import async_playwright
async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.new_page()
        await page.goto("http://www.baidu.com")
        print(await page.title())
        await browser.close()

asyncio.run(main())

防止WebDriver 被檢測(cè)

js = """
Object.defineProperties(navigator,{webdriver:{get:()=>undefined}};
"""
page.add_init_script(js)

或者
page.add_init_script("""Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});""")

獲取源碼,文本,屬性

獲取源碼: .content()
page.wait_for_load_state('networkidle')
html = page.content()
獲取文本: .text_content()
# ul->li下
brand = element.query_selector('text=品牌:').text_content()

name = ele_items.query_selector('section > div._3KXtu._3jY37 > a').text_content()
獲取屬性: .get_attribute()
# ul->li下
 link = element.query_selector('h5 a').get_attribute('href')

wait_for_load_state

"commit ": 接收到網(wǎng)絡(luò)響應(yīng)且文檔開(kāi)始加載時(shí)(僅顯示了頁(yè)面默認(rèn)窗口視圖下的元素)
"domcontentloaded": 認(rèn)為在 DOMContentLoaded 事件完成時(shí)(顯示了完整頁(yè)面)
"load": 在 load 事件完成時(shí)操作完成(含了所有圖片資源)
"networkidle": 至少 500 毫秒內(nèi)沒(méi)有網(wǎng)絡(luò)連接時(shí)操作完成

頁(yè)面加載的整個(gè)狀態(tài)變化
Commit -> DOMContentLoaded -> load -> networkidle

監(jiān)聽(tīng) response 事件:page.on()

from playwright.sync_api import sync_playwright
 
def on_response(response):
    if '/api/movie/' in response.url and response.status == 200:
        print(response.json())
        print(f'Statue {response.status}:{response.url}')
 
with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    # Page 就是單獨(dú)的一個(gè)瀏覽器 tab 標(biāo)簽
    page = browser.new_page()
    page.on('response', on_response)
    # page.on('response', lambda response: on_response(response, product_data, id))
    page.goto('https://spa6.scrape.center/')
    page.wait_for_load_state('networkidle')
    browser.close()

# 監(jiān)聽(tīng)彈窗
with page.expect_popup() as popup:
	page.evaluate('window.open()')
popup.value.goto('http://www.baidu.com')
# 監(jiān)聽(tīng)請(qǐng)求
with page.expect_request('**/*login*.png') as first:
	page.goto('http://www.baidu.com')
print(first.value.url)

傳參監(jiān)聽(tīng)

 page.on('response', lambda response: on_response(response, id))
 for (url, id) in urls:
 	pass

滾動(dòng)

下拉滾動(dòng)條
page.evaluate("var q=document.documentElement.scrollTop=15000")
鼠標(biāo)滾動(dòng)
page.mouse.wheel(0,7000)

截圖

 with sync_playwright() as p:
        browser = p.chromium.launch(headless=False, slow_mo=50)
        page = browser.new_page()
        page.goto("http://www.baidu.com")
        page.screenshot(path="example.png")
        browser.close()

獲取cookie

browser = playwright.chromium.launch(headless=False)
context = browser.new_context()

cookies = context.storage_state()
cookie = '; '.join([f'{key["name"]}={key["value"]}' for key in cookies['cookies']])

CSS,xpath選擇器

t偽類選擇器
has-text():檢測(cè)包含(返回找到的所有元素)
text():檢測(cè)等于(返回第一個(gè)找到的元素)

# 選擇文本是 Log in 的節(jié)點(diǎn),并點(diǎn)擊
page.click("text=Log in",timeout=5000)
page.click("text=你好,請(qǐng)登錄")

page.locator(':has-text("All products")').click() 

page.locator("#nav-bar :text('Contact us')").click()
page.locator('[data-test=login-button]').click()
page.locator("[aria-label='Sign in']").click()

# 選擇 id 為 nav-bar 子孫節(jié)點(diǎn) class 屬性值為 contact-us-item,并點(diǎn)擊
page.click("#nav-bar .contact-us-item")
 
# 選擇文本中包含 Playwright 的 article 節(jié)點(diǎn)
page.click("article:has-text('Playwright')")
 
# 選擇 id 為 nav-bar 節(jié)點(diǎn)中文本值等于 Contact us 的節(jié)點(diǎn)
page.click("#nav-bar :text('Contact us')")
 
# 選擇 class 為 item-description 的節(jié)點(diǎn),且該節(jié)點(diǎn)還要包含 class 為 item-promo-banner 的子節(jié)點(diǎn)
page.click(".item-description:has(.item-promo-banner)")
 
# 擇的就是一個(gè) input 節(jié)點(diǎn),并且該 input 節(jié)點(diǎn)要位于文本值為 Username 的節(jié)點(diǎn)的右側(cè)
page.click("input:right-of(:text('Username'))")

# xpath
page.click("xpath=//button")

get_by_xxx定位器

●page.get_by_text(文本,**kwargs)按文本內(nèi)容定位。
●page.get_by_role(角色,**kwargs)按角色屬性

●page.get_by_label(文本,**kwargs)通過(guò)關(guān)聯(lián)標(biāo)簽的文本查找表單控件
● page.get_by_test_id(test_id)根據(jù)元素的屬性定位元素(可以配置其他屬性)
page.get_by_placeholder(文本,**kwargs)按占位符查找輸入

● 通過(guò)其文本替代來(lái)定位元素,通常是圖像。
●page.get_by_title(文本,**kwargs)按標(biāo)題定位元素。

page.get_by_label("Password").fill("secret-password")

page.get_by_role("option", name="全部企業(yè)").click()
page.get_by_role("button", name="Sign in").click()

# 關(guān)閉詳情彈窗
page.frame_locator("internal:attr=[title=\"詳情頁(yè)\"i]").locator(
                "#enterprise-details-close").click()

# 文本內(nèi)容
page.get_by_text(str(select_text)).click()

# 正則匹配定位
page.get_by_role("tab", name=re.compile("風(fēng)險(xiǎn)信息", re.IGNORECASE)).click()

Playwright 入門詳細(xì)教程

循環(huán)遍歷ul: query_selector_all()

uls = page.query_selector_all('//*[@id="YZhV9-anchor"]//table[@class="ant-table-fixed"]/tbody/tr')
for ele_items in uls:
	title = ele_items.query_selector('section > div._3KXtu._3jY37 > a').text_content()

同級(jí)第幾個(gè):.nth(2)

點(diǎn)擊最后一個(gè)按鈕
page.click("button >> nth=-1")

page.get_by_placeholder("請(qǐng)輸入手機(jī)號(hào)碼").nth(1).click()

文本輸入:.fill()

# 標(biāo)簽定位輸入
page.locator('text=First Name').fill('Peter')

page.get_by_placeholder("請(qǐng)輸入手機(jī)號(hào)碼").nth(1).fill('12345678901')

定位器過(guò)濾器:filter

page.locator("a").filter(has_text="密碼登錄").click()

刷新,前進(jìn),后退

page.reload(**kwargs) # 刷新
page.go_back(**kwargs)  # 后退
page.go_forward(**kwargs)  # 前進(jìn)

等待

# 等待直到title元素被加載完全
page.locator("title").wait_for()   

# 會(huì)自動(dòng)等待按鈕加載好再執(zhí)行點(diǎn)擊
page.locator("button", has_text="sign up").click() 

# Playwright 會(huì)等待 #search 元素出現(xiàn)在 DOM 中
page.fill('#search', 'query')

# Playwright 會(huì)等待元素停止動(dòng)畫并接受點(diǎn)擊
page.click('#search')

# 等待 #search 出現(xiàn)在 DOM 中
page.wait_for_selector('#search', state='attached')
# 等待 #promo 可見(jiàn), 例如具有 `visibility:visible` 
page.wait_for_selector('#promo')

# 等待 #details 變得不可見(jiàn), 例如通過(guò) `display:none`.
page.wait_for_selector('#details', state='hidden')

# 等待 #promo 從 DOM 中移除
page.wait_for_selector('#promo', state='detached')


# 隨機(jī)等待
page.wait_for_timeout(random.uniform(2500, 4500))

點(diǎn)擊

  • 左鍵點(diǎn)擊:page.click(“id=su”)
  • 點(diǎn)擊元素左上角:page.click(‘id=su’, position={‘x’: 0, ‘y’: 0})
  • Shift + click:page.click(“id=su”, modifiers=[‘Shift’])
  • 強(qiáng)制點(diǎn)擊:page.click(“id=su”, force=True)
  • 右鍵點(diǎn)擊:page.click(“id=su”, button=‘right’)
  • 雙擊:page.dblclick(“id=su”)
  • 懸停在元素上:page.hover(‘id=su’)

模擬鍵盤輸入

page.press("id=kw", 'Control+A'):Control+A
page.press('id=kw', 'Enter'):點(diǎn)擊回車

# 一個(gè)字符一個(gè)字符的輸入
page.type("id=kw", "playwright", delay=100): 每個(gè)字符延遲100ms輸入

參考:
https://huaweicloud.csdn.net/63802f5edacf622b8df864ec.html#devmenu22
https://blog.csdn.net/u010698107/article/details/121070336文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-413332.html

到了這里,關(guān)于Playwright 入門詳細(xì)教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • playwright教程 (一)適合小白

    playwright是微軟發(fā)布的一款自動(dòng)化測(cè)試工具,可以自動(dòng)生成代碼 在學(xué)習(xí)playwright前可以了解playwright文檔,目前只有英文版!

    2024年02月10日
    瀏覽(22)
  • playwright基礎(chǔ)教程

    playwright基礎(chǔ)教程

    Playwright是一個(gè)由Microsoft開(kāi)發(fā)的自動(dòng)化測(cè)試工具,可以用來(lái)測(cè)試Web應(yīng)用程序。它支持多種編程語(yǔ)言和多個(gè)瀏覽器,包括Chrome,F(xiàn)irefox和WebKit。它通過(guò)提供一組API,使得開(kāi)發(fā)人員可以在瀏覽器中模擬用戶行為,例如單擊,輸入文本和導(dǎo)航到不同的頁(yè)面,同時(shí)還能捕捉截圖和視頻。

    2024年02月09日
    瀏覽(20)
  • 【playwright】新一代自動(dòng)化測(cè)試神器playwright+python系列課程12_playwright_frame中元素定位

    【playwright】新一代自動(dòng)化測(cè)試神器playwright+python系列課程12_playwright_frame中元素定位

    網(wǎng)頁(yè)中經(jīng)常嵌套frame框架,在網(wǎng)頁(yè)中標(biāo)簽為iframe或frame的元素就是frame框架 如圖 或者 在frame框架中的元素時(shí)不能直接定位的,selenium處理frame,需要切換到frame中,然后再切換出來(lái),操作比較麻煩,那么playwright對(duì)于frame的操作會(huì)不會(huì)更加簡(jiǎn)單呢? 答案是肯定的,playwright不需要切

    2024年01月18日
    瀏覽(58)
  • 【playwright】新一代自動(dòng)化測(cè)試神器playwright+python系列課程22_playwright模擬鼠標(biāo)操作_懸停_右擊_雙擊

    【playwright】新一代自動(dòng)化測(cè)試神器playwright+python系列課程22_playwright模擬鼠標(biāo)操作_懸停_右擊_雙擊

    有些元素,只有你鼠標(biāo)移動(dòng)到它那個(gè)位置上,他才會(huì)展開(kāi)或者顯示一些內(nèi)容,這時(shí)候就要用到hover()操作了。 以個(gè)人設(shè)置這個(gè)下拉菜單,來(lái)看一下hover的使用。 項(xiàng)目實(shí)踐代碼 以雙擊關(guān)閉彈出的流程窗口為例,看一下dblclick()使用 項(xiàng)目實(shí)踐代碼 以彈出的右鍵菜單為例,看一下

    2024年01月18日
    瀏覽(29)
  • 《最新出爐》系列初窺篇-Python+Playwright自動(dòng)化測(cè)試-3-離線搭建playwright環(huán)境

    《最新出爐》系列初窺篇-Python+Playwright自動(dòng)化測(cè)試-3-離線搭建playwright環(huán)境

    有些小伙伴或者童鞋們私信留言說(shuō)自己是在公司局域網(wǎng)辦公,或者公司為了安全對(duì)網(wǎng)絡(luò)管控比較嚴(yán)格(尤其是一些大的國(guó)企、央企),總之就是一句話無(wú)法連到外網(wǎng)去在線下載,宏哥剛看到留言時(shí)覺(jué)得這問(wèn)題還留言問(wèn)啊,你找個(gè)有網(wǎng)的電腦下載好安裝包然后安裝就可以用了。

    2024年02月08日
    瀏覽(24)
  • python安裝playwright問(wèn)題記錄

    python安裝playwright這個(gè)時(shí)候,有得時(shí)候會(huì)https timeout 有的時(shí)候會(huì) not found。 我最后使用的方法三,挺好用的。 PyPI · The Python Package Index 可以嘗試使用的方法 1. 更換pip源:使用國(guó)內(nèi)的pip源可以提高下載速度并減少超時(shí)問(wèn)題。例如,你可以將pip源更改為清華大學(xué)的鏡像源,使用以下

    2024年02月10日
    瀏覽(18)
  • 【python playwright 安裝及驗(yàn)證】

    【python playwright 安裝及驗(yàn)證】

    pip install playwright pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple playwright codegen -o script.py -b chromium --ignore-https-errors --viewport-size “2560,1440” --proxy-server “http://100.8.64.8:60497” https://www.baidu.com/

    2024年02月01日
    瀏覽(16)
  • Playwright for Python:斷言

    Playwright for Python:斷言

    Playwright支持以下幾種斷言: 斷言 描述 expect(locator).to_be_checked() 復(fù)選框被選中 expect(locator).to_be_disabled() 元素是禁用狀態(tài) expect(locator).to_be_editable() 元素是可編輯狀態(tài) expect(locator).to_be_empty() 容器是空的 expect(locator).to_be_enabled() 元素是可用的 expect(locator).to_be_focused() 元素已獲取焦

    2024年02月09日
    瀏覽(13)
  • Playwright 結(jié)合 Selenium Grid - 1.windows 環(huán)境使用教程

    Playwright 結(jié)合 Selenium Grid - 1.windows 環(huán)境使用教程

    Playwright 可以連接到運(yùn)行 Selenium 4 的 Selenium Grid Hub 來(lái)啟動(dòng) Google Chrome 或 Microsoft Edge 瀏覽器,而不是在本地機(jī)器上運(yùn)行瀏覽器。 打開(kāi)selenium官方https://www.selenium.dev/downloads/下載Selenium Server (Grid) 目前最新版本4.16.1 下載地址https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.16.0

    2024年01月22日
    瀏覽(68)
  • 《最新出爐》系列初窺篇-Python+Playwright自動(dòng)化測(cè)試-2-playwright的API及其他知識(shí)

    《最新出爐》系列初窺篇-Python+Playwright自動(dòng)化測(cè)試-2-playwright的API及其他知識(shí)

    上一篇宏哥已經(jīng)將Python+Playwright的環(huán)境搭建好了,而且也簡(jiǎn)單的演示了一下三款瀏覽器的啟動(dòng)和關(guān)閉,是不是很簡(jiǎn)單啊。今天主要是把一篇的中的代碼進(jìn)行一次詳細(xì)的注釋,然后說(shuō)一下playwright的API和其他相關(guān)知識(shí)點(diǎn)。那么首先將上一篇中的代碼進(jìn)行一下詳細(xì)的解釋。 2.1創(chuàng)建瀏

    2024年02月07日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包