#みなさんこんにちは、私は新人です。
最近 G Web サイトにアクセスしたところ、Microsoft が「playwright-python」というプロジェクトを新進プロジェクトとしてオープンソース化していることを知りました。
Playwright は、Python 言語用の純粋な自動化ツールです。単一の API を通じて Chromium、Firefox、WebKit ブラウザーを自動的に実行できます。コードを書かずに自動化を実現できます。 。
テスト ツール selenium には完全なドキュメントがありますが、その学習コストが多くの初心者にとっては困難であるのに対し、playwright-python は初心者向けの単なる成果物です。
Playwright は本当に Python で動作しますか?答えは「はい」です。Microsoft は Python 用の Playwright を用意しています。 API の重大な変更が発生する可能性があります。しかし、それが実現しない可能性は高く、Microsoft は、新しいライブラリのエクスペリエンスが向上するとわかっている場合にのみそうするだろうと述べています。
ただし、Microsoft は、Chromium トラッキングやカバレッジ レポートの収集など、ベンダー固有の API の一部の特殊なケースはまだサポートされていないことにも注意を促しています。
1. Playwright の概要
Playwright は、1 つの API だけを使用して Chromium、Firefox、WebKit などの主流ブラウザ上で自動操作を自動的に実行できる強力な Python ライブラリであり、ヘッドレス ブラウザもサポートしています.モード、ヘッドレスモード動作。
Playwright が提供する自動化テクノロジは、環境に優しく、強力で、信頼性が高く、高速であり、Linux、Mac、および Windows オペレーティング システムをサポートしています。
一部の友人もこれを賞賛しました: Python 言語の純粋な自動化ツールとして、このプロジェクトはコードを解放し、自動化機能を実現します。その使用方法を見てみましょう。
2. Playwright を使用してインストールする
Playwright のインストールは非常に簡単で、2 つのステップで解決できます。
安装playwright库
pip install playwright
安装浏览器驱动文件(安装过程稍微有点慢)
python -m playwright install
ログイン後にコピー
上記の 2 つの pip 操作は個別にインストールされます:
Playwright 依存ライブラリをインストールするには Python3.7 が必要です Chromium、Firefox、WebKit、およびその他のブラウザー用のドライバーをインストールしますファイル
記録
Playwright を使用するためにコード行を記述する必要はありません。ブラウザを手動で操作するだけで、操作が記録され、自動的に生成されます。コードスクリプト。
以下は、記録されたコマンド codegen の 1 行です。
命令行键入 --help 可看到所有选项
python -m playwright codegen
ログイン後にコピー
codegen の使用法は --help を使用して表示できます。使い方が簡単な場合は、コマンドの直後に URL リンクを追加するだけです。その他の必要がある場合は、オプションを追加できます。
python -m playwright codegen --help
Usage: index codegen [options] [url]
open page and generate code for user actions
Options:
-o, --output <file name>saves the generated script to a file
--target <language> language to use, one of javascript, python, python-async, csharp (default: "python")
-h, --helpdisplay help for command
Examples:
$ codegen
$ codegen --target=python
$ -b webkit codegen https://example.com
ログイン後にコピー
オプションの意味:
-o: 記録されたスクリプトをファイルに保存します。 --target: スクリプトを生成する言語を指定します (JS や JS など)。 Python 2 種類、デフォルトは Python-b: ブラウザ ドライバを指定します
たとえば、baidu.com で検索し、chromium ドライバを使用して、結果は my.py Python ファイルとして生成されます。
python -m playwright codegen --target python -o 'my.py' -b chromium https://www.baidu.com
ログイン後にコピー
コマンド ラインを入力すると、ブラウザが自動的に開き、次に示すように、ブラウザ上のすべてのアクションが自動的にコードに変換されることがわかります。
# 完了後にブラウザを自動的に閉じ、生成された自動化スクリプトを py ファイルに保存します。
from playwright import sync_playwright
def run(playwright):
browser = playwright.chromium.launch(headless=False)
context = browser.newContext()
# Open new page
page = context.newPage()
page.goto("https://www.baidu.com/")
page.click("input[name="wd"]")
page.fill("input[name="wd"]", "jingdong")
page.click("text="京东"")
# Click //a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']
with page.expect_navigation():
with page.expect_popup() as popup_info:
page.click("//a[normalize-space(.)='京东JD.COM官网 多快好省 只为品质生活']")
page1 = popup_info.value
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright
ログイン後にコピー
さらに、Playwright は同期および非同期 API インターフェイスも提供します。ドキュメントは次のとおりです。
リンク: https://microsoft.github.io/playwright-python/index.html
Sync
次のサンプル コード: 開く3 つのブラウザの場合は、Baidu に移動して検索し、スクリーンショットを撮って終了します。
from playwright import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch()
page = browser.newPage()
page.goto('https://baidu.com/')
page.screenshot(path=f'example-{browser_type.name}.png')
browser.close()
ログイン後にコピー
非同期
非同期操作を asyncio と組み合わせて、3 つのブラウザー操作を同時に実行できます。
import asyncio
from playwright import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = await browser_type.launch()
page = await browser.newPage()
await page.goto('http://baidu.com/')
await page.screenshot(path=f'example-{browser_type.name}.png')
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
ログイン後にコピー
モバイル端末
さらに驚くべきことに、Playwright はモバイル ブラウザー シミュレーションもサポートできることです。以下は公式ドキュメントで提供されているコードで、特定の地理的位置にある iPhone 11 pro の Safari ブラウザをシミュレートします。まず、maps.google.com に移動し、位置決めを実行してスクリーンショットを撮ります。
from playwright import sync_playwright
with sync_playwright() as p:
iphone_11 = p.devices['iPhone 11 Pro']
browser = p.webkit.launch(headless=False)
context = browser.newContext(
**iphone_11,
locale='en-US',
geolocation={ 'longitude': 12.492507, 'latitude': 41.889938 },
permissions=['geolocation']
)
page = context.newPage()
page.goto('https://maps.google.com')
page.click('text="Your location"')
page.screenshot(path='colosseum-iphone.png')
browser.close()
ログイン後にコピー
また、pytest プラグインでも利用できるので、興味のある方はぜひ試してみてください。
3. 概要
Playwright には、既存の自動テスト ツールに比べて次のような多くの利点があります。
すべてのブラウザのサポート
- Chromium、Firefox、WebKit でテスト済み。 Playwright は、Google Chrome および Microsoft Edge (Chromium を使用)、Apple Safari (WebKit を使用)、および Mozilla Firefox を含む、すべての最新ブラウザーの API を完全にカバーしています。
- クロスプラットフォームの WebKit テスト。 Windows、Linux、macOS 用の WebKit で構築された Playwright を使用して、Apple Safari でアプリがどのように動作するかをテストします。ローカルおよび CI でテストされました。
- 電話をテストします。デバイス エミュレーションを使用して、モバイル Web ブラウザーで応答性の高い Web アプリケーションをテストします。
- ヘッダーなしとヘッダーあり。 Playwright は、すべてのブラウザーとすべてのプラットフォームでヘッドレス (ブラウザー UI なし) モードとヘッドレス (ブラウザー UI あり) モードをサポートします。ヘッダー モードはデバッグに適しており、ヘッダーレス モードは CI/クラウドの実行に適しています。
高速かつ信頼性の高い実行を実現
- 自動待機 API。 Playwright インタラクションは、要素の準備ができるまで自動的に待機します。これにより、信頼性が向上し、テスト書き込みプロセスが簡素化されます。
- タイムアウトの自動化はありません。 Playwright は、ネットワーク リクエスト、ページ ナビゲーション、ページ読み込みイベントなどのブラウザー信号を受信して、スリープが中断される煩わしさを排除します。
- ブラウザのコンテキストと平行してください。単一のブラウザ インスタンスを複数の並列分離ブラウザ コンテキスト実行可能環境に再利用します。
- 性的要素セレクター。 Playwright は、テキスト コンテンツやアクセシビリティ タグなどのユーザー向けの文字列に依存して要素を選択できます。これらの文字列は、DOM 構造に密接に結合されているセレクターよりも柔軟性があります。
強力な自動化機能を備えています
- 複数のドメイン、ページ、フレーム。 Playwright は、ページ内の JavaScript 実行の範囲に制限されず、複数のページのシナリオを自動化できるアウトプロセス自動化ドライバーです。
- 強力なネットワーク制御。 Playwright は、ネットワーク リクエストを終了またはシミュレートするために、コンテキスト全体のネットワーク インターセプトを導入します。
- 最新のネットワーク機能。 Playwright は、セレクター、地理位置情報、権限、Web ワーカー、その他の最新の Web API が挿入された Web コンポーネントをサポートします。
- あらゆるシナリオをカバーする機能。ファイルのダウンロードとアップロード、アウトプロセス iframe、ネイティブ入力イベント、さらにはダーク モードをサポートします。
ただし、制限もあります。
- Old Edge と IE11 のサポート。 Playwright は、古いバージョンの Microsoft Edge または IE11 をサポートしていません (非推奨の通知)。新しい Microsoft Edge (Chromium 上) のサポート。
- Java 言語バインディング: Playwright API は現在、Java または Ruby では使用できません。 Playwright はあらゆる言語のバインディングをサポートするように設計されているため、これは一時的な制限です。
- 実際のモバイル デバイスでのテスト: Playwright はデスクトップ ブラウザを使用してモバイル デバイスをエミュレートします。
いくつかの制限がありますが、Playwright はバージョン 1.7.0 に更新されました。更新が世代を重ねるごとに、システムはより完璧になります。初心者のアーティファクトとして、それはすべての人を救います非常に多くのこと、私たちはその未来がますます良くなると信じています。
以上がMicrosoft の Python 初心者向けツールはとてもおいしいです!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。