使用🎭パイソン:アルペン


playwright-pythonブラウザの自動化のための本当に素晴らしいライブラリです.
しかし、それはAlpine Linuxで走るのをサポートしません.
https://github.com/microsoft/playwright-python/issues/234
ほとんどのWeb開発者は、アルパインベースのDockerイメージを使用します、そして、実際に、PlayWire Painterは、アルプスでスクリプトを走らせる能力を持ちます.

PlayWire Pythonがなぜアルプスで走ることができないか?



Playwright Pythonは、ブラウザのダウンローダが付属しています.我々が知っているように、ブラウザは多くの依存関係を必要とします.DEPSはアルパインと互換性がない.
これは、劇作家パイソンがアルプスで走ることを否定する主な理由であるかもしれません.
ところで、我々はすでにセレンリモートドライバ(セレングリッド)を知って、それはスクリプトのランナーとブラウザの環境をHTTPポート(デフォルト:4444)と通信を分離します.

スクリプトランナーとブラウザーを分ける方法



Playwright Pythonは劇作家のPythonクライアントライブラリです.PlayWrightサーバーWebSocketまたは他のプロトコルを介してブラウザと通信し、PlayWight Pythonはデフォルトでパイプ経由でサーバーと通信します.
しかしPlaywright Pythonは既にPlayWright V 1でAPI BrowserType#connect()のWebSocketTransportを導入しました.11以降.また、クライアントとサーバー間のplaywright接続に使用することができます.

それをお試しください!


私は小さな図書館をつくった.
https://github.com/YusukeIwaki/playwright-python-remote
このライブラリは、PirpeTransportをWebSocketTransportと交換するPlayWriter初期化子(ContextExtManager)を提供します.
https://github.com/YusukeIwaki/playwright-python-remote/blob/main/playwright_remote/sync_api/sync_playwright_remote.py
PlayWrightサーバはDockerでとても簡単に準備できます:
FROM mcr.microsoft.com/playwright:focal

WORKDIR /root
RUN npm install [email protected] && ./node_modules/.bin/playwright install
CMD ["./node_modules/.bin/playwright", "run-server"]
現在、我々はアルプスの上でPlaywrightパイソンを楽しむことができます:
from playwright_remote.sync_api import sync_playwright_remote

with sync_playwright_remote('ws://127.0.0.1:8080/ws') as playwright:
  browser = playwright.chromium.launch()
  try:
    page = browser.new_page()
    page.goto('https://github.com/YusukeIwaki')
    page.screenshot(path='YusukeIwaki.png')
  finally:
    browser.close()
私もherokuにそれを試みました

https://zenn.dev/yusukeiwaki/scraps/3ad5f8ed536720 結論


Playwrightパイソンは本当に素晴らしいです、それはアルプスで実際に動きます.
WebSocketTransport(この記事で紹介)は内部クラスで、将来のリリースで変更することができます.
ちょうど機能が公式にサポートされることを期待します.投票しましょう
👍