Playwright for .NET - 2024/6/9
PlaywrightはMicrosoft製ということもあって?.NETからも使える!
他にもPython、Java版もあるので便利!
そんなに.NET版て需要あるんかな
インストール
dotnetコマンドは利用できる前提で記載する。
プロジェクトは作成している状態で、パッケージを入れていく。
code:powershell
$ dotnet add package Microsoft.Playwright
ブラウザはマシンにインストールされているものを利用したいので、playwrightの付属品は入れない。
サンプル
テストケースでない場合のサンプルを記載する。
code:sample.cs
using Microsoft.Playwright;
namespace Sample {
public class Sample {
public static async Task< Main(string[] args) {
// ブラウザを起動
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new() {
Channel = "chrome", // マシンに既存のChromeを使う
Headless = false, // 画面を出しながら操作する
SlowMo = 1000 // 各操作に待ち時間を設ける
});
// ウインドウを起動
IBrowserContext? context = null;
context = await browser.NewContextAsync(new() {
ViewportSize = ViewportSize.NoViewport
});
// タブを起動
var page = await context.NewPageAsync();
// 対象のページへ遷移
await page.ScreenshotAsync(new() { Path = "sample.png" });
// ブラウザは using で起動しているので、処理終了後に閉じられる
}
}
}
ちなみに、画像のロードを待ってからスクリーンショットを取得するには以下のようにする。
.NET版のwaitForFunctionである、WaitForFunctionAsyncを利用する。
渡す関数自体は、どうも文字列で渡す必要があるようなので、以下のような感じで。
code:sample.cs
await page.WaitForFunctionAsync(@"() => {
return Array.from(document.querySelectorAll('img')).every(img => img.complete);
}");
参考