Playwright Python 備忘録
個人的な備忘録です。
Contents
備忘録
#ライブラリーインポート
from playwright.sync_api import sync_playwright
import re
with sync_playwright() as p:
#playwrightの基本設定#headless(ブラウザの画面描画を無効化する機能)をオフ,ブラウザはgoogle chromeを使用する
browser = p.chromium.launch(headless=False,channel="chrome")
context = browser.new_context()
page = context.new_page()
#ネットワークブロック(ここで指定したドメインや拡張子の通信をブロックし読み込まなくする)
page.route(re.compile(r"(xxx.com)|(.css)(xxx.com/images)"), lambda route: route.abort())
#指定したURLにアクセス
page.goto("xxx.com")
#入力フォームに自動入力(//で始めると勝手にXPATHを認識する)
page.fill('//input[@name="email"]', 'xxx@gmail.com')
#特定のキーを送信
page.press('//input[@id="form"]', 'Control+A')
#セレクターで選ばれた要素を変数に格納(実際に要素がない場合にもエラーにならない(たぶん))
element = page.locator('//*[@id="date"]')
#上記で取得した要素の一番最初の項目をクリック
element.first.click()
#上記で取得した要素をテキスト化してリスト化
element.all_inner_texts()
#クリックする(タイムアウトデフォルトは30秒、単位はmsなので500だと0.5秒)
page.click('//*[@id="submit"]',timeout=500)
#クリックできるか確認する(実際にはクリックしない)
page.click('//*[@id="submit"]',trial=True)
#ドロップダウンリストをから選択する
page.select_option('//*[@id="date_year"]', 2022)
軽い解説
7行目
browser = p.chromium.launch(headless=False,channel="chrome")
- channel="chrome"は"msedge", “chrome-beta", “msedge-beta", “msedge-dev"とかに変えるとそれになる。
- channel="chrome"の記述を消すとchrominiumが起動する
- firefoxの場合はp.firefox.launch()にする(たぶん)
17行目
page.fill('//input[@name="email"]', 'xxx@gmail.com')
- テキストで選択する場合 (“text=Log in")
- CSSセレクターで選択する場合 (“#nav-bar .contact-us-item")
- あとは(“#id") (“.class")とかで選択すればいいと思います。僕はXPATHerなのでXPATHにこだわりますが。XPATHerなのでね。
オタク特有の唐突な独り言
seleniumをいままで使ってましたが、安定度が高く軽量なのでこれをメインに使っていこうかなとおもいます
ただ、ほい卒底辺キモオタクなので言語はpythonしか使えないのもあり、文献がすくなすぎてキツイ。その辺はseleniumが優秀。
ひとまずEN_Cをplaywrightで書き直してる。
キモオタクが独学でプログラミングやってもキモオタク的なことにしか使わないの非常にオタクって感じでキモイわね