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

Python?Playwright的使用詳解

 更新時(shí)間:2022年10月14日 14:07:31   作者:夢(mèng)想橡皮擦  
本篇博客為大家介紹一款新的自動(dòng)化測(cè)試工具,效果類似?selenium,但是這個(gè)模塊年輕。模塊名稱為?playwright-python,微軟開(kāi)源的,是針對(duì)?Python?語(yǔ)言的純自動(dòng)化工具,感興趣的可以了解一下

實(shí)戰(zhàn)場(chǎng)景

本篇博客為大家介紹一款新的自動(dòng)化測(cè)試工具,效果類似 selenium,但是這個(gè)模塊年輕。

模塊名稱為 playwright-python,微軟開(kāi)源的,是針對(duì) Python 語(yǔ)言的純自動(dòng)化工具,可以通過(guò) API 調(diào)用瀏覽器,github 地址在本文末尾。

接下來(lái)將通過(guò) 3 篇博客為大家詳細(xì)介紹該 playwright-python,徹徹底底了解它。

正式開(kāi)始前依舊是模塊安裝:

pip install playwright

該模塊安裝非???,但完整體驗(yàn)還需要安裝瀏覽器相關(guān)驅(qū)動(dòng),這個(gè)有點(diǎn)大,命令如下:

python -m playwright install

安裝時(shí)注意使用國(guó)內(nèi)源!

等待過(guò)程中,可以查閱輸出日志,核對(duì)安裝了哪些模塊:

  • Downloading FFMPEG:FFMPEG;
  • Downloading Firefox 104.0:火狐瀏覽器驅(qū)動(dòng);
  • Downloading Chromium :谷歌瀏覽器驅(qū)動(dòng);
  • Downloading Webkit 16.0 :Webkit 瀏覽器驅(qū)動(dòng)。

實(shí)戰(zhàn)操作

第一次實(shí)戰(zhàn)操作,先從不寫代碼開(kāi)始,通過(guò)下述命令啟動(dòng)瀏覽器,然后【錄制】我們的操作過(guò)程。

python -m playwright codegen

運(yùn)行代碼之后,彈出默認(rèn)瀏覽器和一個(gè)代碼錄制展示框,具體如下所示:

下面就可以在左側(cè)的瀏覽器窗口中進(jìn)行操作,然后觀察右側(cè)自動(dòng)生成的代碼段。

在地址欄輸入 baidu.com 跳轉(zhuǎn)到百度首頁(yè),然后輸入 航天員,點(diǎn)擊搜索按鈕,生成的代碼如下所示。

將生成的代碼復(fù)制到開(kāi)發(fā)工具中,直接運(yùn)行就可以得到剛剛相同的操作。

from playwright.sync_api import Playwright, sync_playwright, expect


def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    # Open new page
    page = context.new_page()
    # Go to https://www.baidu.com/
    page.goto("https://www.baidu.com/")
    # Click input[name="wd"]
    page.locator("input[name=\"wd\"]").click()
    # Fill input[name="wd"]
    page.locator("input[name=\"wd\"]").fill("航天員")
    # Press Enter
    page.locator("input[name=\"wd\"]").press("Enter")
    page.wait_for_url(
        "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E8%88%AA%E5%A4%A9%E5%91%98&fenlei=256&rsv_pq=0xfde7decb0011bfe6&rsv_t=3a67vLT%2Buti4VKw0mDppSrydbnq6CGsyOVNNxN%2F39naR6lYvxacuqvbYKRs0&rqlang=en&rsv_enter=1&rsv_dl=tb&rsv_sug3=24&rsv_sug1=24&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=%25E8%2588%25AA%25E5%25A4%25A9%25E5%2591%2598&rsp=5&inputT=5824&rsv_sug4=6786&rsv_jmp=fail")
    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

接下來(lái)我們分析一下其生成的代碼含義。

from playwright.sync_api import Playwright, sync_playwright

playwright.sync_api 模塊導(dǎo)入 Playwrightsync_playwright,看到關(guān)鍵字 sync,可以猜測(cè)這是一個(gè)同步操作,那與之對(duì)應(yīng)的,也是未來(lái)我們要對(duì)比學(xué)習(xí)的,就是異步接口相關(guān)內(nèi)容,這里先埋下一個(gè)伏筆,下篇博客在進(jìn)行討論。

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

初始化一個(gè)谷歌瀏覽器對(duì)象,并且不是無(wú)頭瀏覽器,即在桌面打開(kāi)瀏覽器窗口。launch() 方法包含很多參數(shù),常用的有以下內(nèi)容:

  • headless:是否為無(wú)頭瀏覽器,即是否顯示瀏覽器窗口,默認(rèn)為不顯示;
  • channel:瀏覽器版本,"chrome", "chrome-beta", "chrome-dev", "chrome-canary";
  • proxy:代理設(shè)置;
  • timeout:超時(shí)時(shí)間,默認(rèn) 30s。
context = browser.new_context()
page = context.new_page()

打開(kāi)一個(gè)新瀏覽器,創(chuàng)建一個(gè)新頁(yè)面,其中 browser.new_context() 的參數(shù)都是與瀏覽器配置相關(guān)的內(nèi)容,實(shí)踐的時(shí)候需要特別設(shè)置的在這里設(shè)置,例如下述參數(shù):

  • user_agent:UA 代理;
  • viewport:頁(yè)面大小,比例,例 1024*768;
  • offline:離線模式加載。
page.goto("https://www.baidu.com/")
page.locator("input[name=\"wd\"]").click()
……
page.wait_for_url(……)
  • goto() :地址跳轉(zhuǎn),即瀏覽器跳轉(zhuǎn);
  • locator():定位元素;
  • wait_for_url():等待頁(yè)面加載完畢。

本文末尾重點(diǎn)介紹一下 goto() 相關(guān)內(nèi)容,剩余函數(shù)下篇博客繼續(xù)說(shuō)明。 goto() 函數(shù)的重要參數(shù):

  • url:跳轉(zhuǎn)地址,必須包含協(xié)議,例如 http:// 或者 https://
  • referer:請(qǐng)求頭中的 referer 參數(shù);
  • timeout:最大操作時(shí)間(毫秒),默認(rèn)為 30 秒;
  • wait_until:默認(rèn)操作成功時(shí),執(zhí)行的內(nèi)容,還有幾個(gè)事件,分別是 domcontentloadednetworkidle,commit

項(xiàng)目開(kāi)源地址:https://github.com/microsoft/playwright-python

官方手冊(cè):https://playwright.dev/python/docs/intro

到此這篇關(guān)于Python Playwright的使用詳解的文章就介紹到這了,更多相關(guān)Python Playwright內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python之用戶輸入的實(shí)例

    Python之用戶輸入的實(shí)例

    今天小編就為大家分享一篇Python之用戶輸入的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python設(shè)置windows桌面壁紙的實(shí)現(xiàn)代碼

    python設(shè)置windows桌面壁紙的實(shí)現(xiàn)代碼

    每天換一個(gè)壁紙,每天好心情。喜歡的朋友可以參考下
    2013-01-01
  • Python文本的藝術(shù)字符串處理技巧掌握

    Python文本的藝術(shù)字符串處理技巧掌握

    這篇文章主要為大家介紹了Python文本的藝術(shù)字符串處理技巧掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題

    解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題

    這篇文章主要介紹了解決python3.6用cx_Oracle庫(kù)連接Oracle的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • python使用代理IP爬取貓眼電影專業(yè)評(píng)分?jǐn)?shù)據(jù)

    python使用代理IP爬取貓眼電影專業(yè)評(píng)分?jǐn)?shù)據(jù)

    在編寫爬蟲程序的過(guò)程中,IP封鎖無(wú)疑是一個(gè)常見(jiàn)且棘手的問(wèn)題,盡管網(wǎng)絡(luò)上存在大量的免費(fèi)IP代理網(wǎng)站,但其質(zhì)量往往參差不齊,令人堪憂,本篇文章中介紹一下如何使用Python的Requests庫(kù)和BeautifulSoup庫(kù)來(lái)抓取貓眼電影網(wǎng)站上的專業(yè)評(píng)分?jǐn)?shù)據(jù),需要的朋友可以參考下
    2024-03-03
  • python類繼承與子類實(shí)例初始化用法分析

    python類繼承與子類實(shí)例初始化用法分析

    這篇文章主要介紹了python類繼承與子類實(shí)例初始化用法,實(shí)例分析了Python類的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 在Python中計(jì)算移動(dòng)平均值的方法

    在Python中計(jì)算移動(dòng)平均值的方法

    在這篇文章中,我們將看到如何在Python中計(jì)算移動(dòng)平均值,移動(dòng)平均是指總觀測(cè)值集合中固定大小子集的一系列平均值,它也被稱為滾動(dòng)平均,文中通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • python flask框架快速入門

    python flask框架快速入門

    Flask 本身相當(dāng)于一個(gè)內(nèi)核,其他幾乎所有的功能都要用到擴(kuò)展,都需要用第三方的擴(kuò)展來(lái)實(shí)現(xiàn),本文給大家分享如何快速入門python flask框架,感興趣的朋友一起看看吧
    2021-05-05
  • Python 導(dǎo)入文件過(guò)程圖解

    Python 導(dǎo)入文件過(guò)程圖解

    這篇文章主要介紹了Python 導(dǎo)入文件過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python PyYAML庫(kù)解析YAML文件使用詳解

    Python PyYAML庫(kù)解析YAML文件使用詳解

    這篇文章主要為大家介紹了Python PyYAML庫(kù)解析YAML文件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論