Open4
Pythonのplaywright備忘録
WebGUIの自動化をするにあたってseleniumよりとっつきやすいものがないか探していたところpython + playwrightがよさそうだったので使ってみる
pytest+playwrightをインストール
公式ドキュメントではpytestとplaywrightを一緒にインストールすることをおススメしているのでpytest-playwrightをインストール
pip install pytest-playwright
playwrightで使用するブラウザをインストール
playwright install
pytestのbrowserにbasic認証用のユーザーとパスワードを設定
試しに家のルーターにログインしようとしたところ、basic認証でつまづいたのでメモ
http://xxx:xxx@192.168.10.1
とURLに直打ちでも良いがhttp_credentialsを使用したほうがスマート
pytestを実行するディレクトリと同じ階層に以下のようなconftest.pyを作成
conftest.py
@pytest.fixture(scope="session")
def browser_context_args(browser_context_args):
return {
**browser_context_args,
"http_credentials": {"username": "xxx", "password": "xxx"},
}
こうすることでテストごとに生成されるbrowser_contextオブジェクトのhttp_credentialsにusernameとpasswordを設定してbasic認証を通すことができる
pytest-playwrightのconftest.pyについては以下のページを参照
テストが失敗しても終了させない方法(soft-assertion)
pytest-playwrightの場合、テストが失敗するとその時点でテストが終了してしまう
pytest-checkモジュールを使用してpytest-playwrightでsoft assertionを実現する
pip install pytest-check
以下のようにfixtureとして呼び出してwith句で使用する
test_hoge.py
def test_hoge(page, check):
with check:
expect(page.get_by_text("ページタイトル")).to_be_visible()
with句にあるexpectでエラーが発生してもテストを終了せずに続行させることができる
fixtureではなくモジュールとしてインポートしてもOK
test_hoge.py
from pytest_check import check