Closed7

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

idumistidumist

実現したいこと

  1. Playwrightで自己署名証明書(オレオレ証明書)の警告を無視したい。
idumistidumist

前提条件

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

結論

  1. (安直な方法)Chromeの起動オプション--ignore-certificate-errorsを指定する。
  2. (本来の方法?)NewContextAsync()にオプションIgnoreHTTPSErrorsを設定する。

→いずれも動作するが、証明書の警告無視だけなら1で良さそう。

また、codegenの場合は起動オプション--ignore-https-errorsを指定する。(2と同じ)
API Testingも2と同じ。

idumistidumist

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();

https://playwright.dev/dotnet/docs/api/class-browsertype#browser-type-launch-option-args

idumistidumist

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();

https://playwright.dev/dotnet/docs/api/class-browser#browser-new-context-option-ignore-https-errors

idumistidumist

codegenの場合は起動オプション--ignore-https-errorsを指定する。

> playwright.ps1 codegen --channel chrome --ignore-https-errors https://127.0.0.1
idumistidumist

API Testingも2と同じ

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