up:: Python

静的コンテンツならばrequestsでアクセス、BeautifulSoupで解析すればいい。
動的コンテンツならpyppetter、playwright、seleniumが使える。
seleniumのほうが多重にタスクを管理したりできるが、playwrightなどのほうがシンプル。

waitは秒数指定だけではない。
Playwrightで秒数指定wait処理を避けてスマートにする テスト自動化 - Qiita

colabで動かすのも可能。
Google Colab上からplaywright-pythonを実行

場所指定

outerHTML

HTML要素の操作。

HTMLの外部HTMLを取得する。
要素の文字列を返す。

Selector

特定DOM要素の操作。

CSSセレクタやJSのドキュメントオブジェクトモデルのメソッドを通り、特定のDOM要素を選択する。
CSSセレクタはページ内の特定の要素を返せる。
JSのDOMメソッドは要素を検索して返せる。

JS Path

コード内の値や操作。

JSにおける変数や関数の参照を返す。
コード内での値や操作のアクセス方法を定義する。
スコープ、名前空間、構造などに影響を受ける。

スタイル

ウェブページの見た目の制御。

CSS。

XPath

XML文書の特定の要素。

XML Path Languageの略。要素や属性を選択するための言語。
特定のノードや属性に強く、スクレイピングやテストは大体これ。

//div[@class='example']の場合、exampleクラスを持つdiv要素を選択する。

Full XPath

文書のルートから始まり、選択した要素までの全ての階層を指定する。
構造が分かりやすいが長い。

Playwright

Browser

playwright.chromium.launch()でまずBrowserオブジェクトを取得する。
このオブジェクトは複数のContextを持つ。

Context

Contextはセッションを表し、ユーザーやプロファイルに関連付けられたページを状態を保持する。
複数のページを持ち、各ページは独立したタブやウィンドウとして扱う。
このオブジェクトは複数のPageを持つ。

Page

Pageはウェブページを表す。ここを通じて内容を操作したりネットワーク通信を監視したりできる。

.locator()に文字列で任意のセレクタを指定すると、elementが取得できる。

locator

Locators | Playwright Python

get_by_role(),get_by_text(),get_by_label(),get_by_placeholder(),get_by_alt_text(),get_by_title(),get_by_test_id()などでページを検索出来る。
より重要なものを指定すると変更されにくい。

role
役割。inputのtype属性やbutton属性などが取れる。
それがかかっている名前も(hoge, name=fuga)などの形式で渡す必要がある。
人間が探すのと近いので推奨。なお、これは重ねて適用できる。

label
ラベル。ラベル属性の内部を検索する。

placeholder
フォームに既にある値、placeholderで検索できる。
ラベルのないフォームに。

text
テキスト。部分(デフォ)、完全(,exact=True)、正規表現(re.compile(,))が使える。
divやspanなど非インタラクティブ要素に。

alt_text
画像用。

title
title属性。

test_id
テストID。ユーザー向けではない。
ちなみに基本のdata-id以外の形式を使う場合は最初に設定しておく。

CSSまたはXPath
page.locator(“css=hoge”)、(“xpath=fuga”)などで使える。
ただし長いし変更されやすいので非推奨。

その他

  • リストを直接検索する.to_have_text()というメソッドがある。
  • 親要素をフィルターで取得できる。
  • ReactやVueで検索できる。
  • divのclassはlocator(.class)で取得できる