Closed7
Playwrightで自己署名証明書(オレオレ証明書)の警告を無視する方法

実現したいこと
- Playwrightで自己署名証明書(オレオレ証明書)の警告を無視したい。

前提条件
- Playwright for .NET 1.49.0
- インストール済みのGoogle Chrome(Playwrightではブラウザをインストールしない)
- 通常表示とヘッドレスのどちらも利用
- puppeteer/pyppeteerやPower Automateの代替としてブラウザ操作の自動化のみが目的(テスト自動化等の本来の用途は全くわかっていない)

結論
- (安直な方法)Chromeの起動オプション
--ignore-certificate-errors
を指定する。 - (本来の方法?)
NewContextAsync()
にオプションIgnoreHTTPSErrors
を設定する。
→いずれも動作するが、証明書の警告無視だけなら1で良さそう。
また、codegenの場合は起動オプション--ignore-https-errors
を指定する。(2と同じ)
API Testingも2と同じ。

1. Chromeの起動オプション--ignore-certificate-errorsを指定する
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new()
{
Channel = "chrome", // インストール済みのChromeを起動
Headless = false, // trueならヘッドレス
Args = new[] { @"--ignore-certificate-errors" } // Chromeの起動オプションを指定
});
var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await page.GotoAsync("https://127.0.0.1");
await context.CloseAsync();
await browser.CloseAsync();

2. (本来の方法?)NewContextAsync()にオプションIgnoreHTTPSErrorsを設定する
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
await using var browser = await playwright.Chromium.LaunchAsync(new()
{
Channel = "chrome", // インストール済みのChromeを起動
Headless = false // trueならヘッドレス
});
var context = await browser.NewContextAsync(new()
{
IgnoreHTTPSErrors = true // HTTPSのエラーを無視
});
var page = await context.NewPageAsync();
await page.GotoAsync("https://127.0.0.1");
await context.CloseAsync();
await browser.CloseAsync();

codegenの場合は起動オプション--ignore-https-errorsを指定する。
> playwright.ps1 codegen --channel chrome --ignore-https-errors https://127.0.0.1

API Testingも2と同じ
await using var apiRequest = await playwright.APIRequest.NewContextAsync(new()
{
BaseURL = "https://127.0.0.1",
IgnoreHTTPSErrors = true // HTTPSのエラーを無視
});
このスクラップは3ヶ月前にクローズされました