<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本篇部落格為大家介紹一款新的自動化測試工具,效果類似 selenium
,但是這個模組年輕。
模組名稱為 playwright-python
,微軟開源的,是針對 Python 語言的純自動化工具,可以通過 API 呼叫瀏覽器,github 地址在本文末尾。
接下來將通過 3 篇部落格為大家詳細介紹該 playwright-python
,徹徹底底瞭解它。
正式開始前依舊是模組安裝:
pip install playwright
該模組安裝非常快,但完整體驗還需要安裝瀏覽器相關驅動,這個有點大,命令如下:
python -m playwright install
安裝時注意使用國內源!
等待過程中,可以查閱輸出紀錄檔,核對安裝了哪些模組:
Downloading FFMPEG
:FFMPEG;Downloading Firefox 104.0
:火狐瀏覽器驅動;Downloading Chromium
:谷歌瀏覽器驅動;Downloading Webkit 16.0
:Webkit 瀏覽器驅動。第一次實戰操作,先從不寫程式碼開始,通過下述命令啟動瀏覽器,然後【錄製】我們的操作過程。
python -m playwright codegen
執行程式碼之後,彈出預設瀏覽器和一個程式碼錄製展示框,具體如下所示:
下面就可以在左側的瀏覽器視窗中進行操作,然後觀察右側自動生成的程式碼段。
在位址列輸入 baidu.com 跳轉到百度首頁,然後輸入 航天員,點選搜尋按鈕,生成的程式碼如下所示。
將生成的程式碼複製到開發工具中,直接執行就可以得到剛剛相同的操作。
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)
接下來我們分析一下其生成的程式碼含義。
from playwright.sync_api import Playwright, sync_playwright
從 playwright.sync_api
模組匯入 Playwright
和 sync_playwright
,看到關鍵字 sync
,可以猜測這是一個同步操作,那與之對應的,也是未來我們要對比學習的,就是非同步介面相關內容,這裡先埋下一個伏筆,下篇部落格在進行討論。
browser = playwright.chromium.launch(headless=False)
初始化一個谷歌瀏覽器物件,並且不是無頭瀏覽器,即在桌面開啟瀏覽器視窗。launch()
方法包含很多引數,常用的有以下內容:
headless
:是否為無頭瀏覽器,即是否顯示瀏覽器視窗,預設為不顯示;channel
:瀏覽器版本,"chrome", "chrome-beta", "chrome-dev", "chrome-canary";proxy
:代理設定;timeout
:超時時間,預設 30s。context = browser.new_context() page = context.new_page()
開啟一個新瀏覽器,建立一個新頁面,其中 browser.new_context()
的引數都是與瀏覽器設定相關的內容,實踐的時候需要特別設定的在這裡設定,例如下述引數:
user_agent
:UA 代理;viewport
:頁面大小,比例,例 1024*768;offline
:離線模式載入。page.goto("https://www.baidu.com/") page.locator("input[name="wd"]").click() …… page.wait_for_url(……)
goto()
:地址跳轉,即瀏覽器跳轉;locator()
:定位元素;wait_for_url()
:等待頁面載入完畢。本文末尾重點介紹一下 goto()
相關內容,剩餘函數下篇部落格繼續說明。 goto()
函數的重要引數:
url
:跳轉地址,必須包含協定,例如 http://
或者 https://
;referer
:請求頭中的 referer
引數;timeout
:最大操作時間(毫秒),預設為 30 秒;wait_until
:預設操作成功時,執行的內容,還有幾個事件,分別是 domcontentloaded
,networkidle
,commit
專案開源地址:https://github.com/microsoft/playwright-python
官方手冊:https://playwright.dev/python/docs/intro
到此這篇關於Python Playwright的使用詳解的文章就介紹到這了,更多相關Python Playwright內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45