ツアー 4: 認証

Selenium 4 が認証をどのように処理するかを紹介

Selenium 4 をリリースする前に、新機能の一部を詳しく紹介するのは良いことだと思いました。もちろん、ここで取り上げるすべての機能は、メインのWebDriver ドキュメントに記載されていますので、ブログ記事を読むのが苦手な方は、そちらに直接飛び込んでください!

最初にご紹介したいのは、Selenium 4 のウェブサイト認証の新機能です。ログインページにユーザー名とパスワードを入力する必要がある INPUT 要素がある「フォームベース」認証は常に処理できましたが、基本認証またはダイジェスト認証を使用するサイトの処理は常に困難でした。Selenium 3 を使用する場合、推奨される方法は、サイトにアクセスする前にログイン Cookie を取得してセッションに設定することでしたが、ユーザー名とパスワード(または将来は他の種類の認証資格情報)を追加するための register メソッドを呼び出すだけで済むようになりました。

要するに、Selenium 4 では、プロセスがより簡単になりました。例を挙げると分かりやすいでしょうか?

// This "HasAuthentication" interface is the key!
HasAuthentication authentication (HasAuthentication) driver;

// You can either register something for all sites
authentication.register(() -> new UsernameAndPassword("admin", "admin"));

// Or use something different for specific sites
authentication.register(
  uri -> uri.getHost().contains("mysite.com"),
  new UsernameAndPassword("AzureDiamond", "hunter2"));
  
driver.register(username: 'admin', password: 'admin')
  

これを実行すると、driver が認証を必要とするページをロードするたびに、指定したユーザー名とパスワードが自動的に使用されます。

この機能は現在、Selenium 4 の CDP サポートの上に実装されており、そのプロトコルをサポートするブラウザでのみ動作しますが、WebDriver Bidi の開発を進めるにつれて、可能になったらそちらに切り替えます。

最終更新日 2021年10月11日: 投稿 [deploy site] (eac25ed14ca) を公開