HTMLUnitDriverの Selenium: ヘッドレスブラウザチュートリアル

⚡ スマートサマリー

HtmlUnitDriver は、最も高速なヘッドレス実装です。 Selenium WebDriverは、かつて人気だったGhostDriverベースのヘッドレスブラウザであるPhantomJSが2018年以降非推奨となり、現在はヘッドレスChromeに取って代わられています。 Firefoxそして、現代の自動化ワークフローのための脚本家。

  • 🤖 ヘッドレスコンセプト: ラン Selenium CPU、メモリ、およびCIパイプライン全体の実行時間を節約するために、目に見えるGUIを持たないテストを実施する。
  • ⚙️ HtmlUnitDriverの強度: 清(ピュア) Java エンジン内蔵、外部バイナリ不要、高速なHTTPレベルのチェックと迅速なフォーム操作に最適。
  • 🚀 PhantomJSの非推奨化: PhantomJS の開発は 2018 年に終了しました。チームはヘッドレス Chrome に移行する必要があります。 Firefoxまたは劇作家。
  • 現代的な代替案: ヘッドレスクロームと Firefox 正確な情報を提供する Javaスクリプトレンダリング、DevToolsプロトコル、およびデバッグ機能の向上。
  • 🧪 最適な使用例: ヘッドレスLinuxランナー上でのスモークチェック、回帰テストスイート、負荷テスト、および継続的インテグレーションジョブ。

HTMLUnitDriverの Selenium

ヘッドレスブラウザとは、グラフィカルユーザーインターフェースを持たないウェブブラウザのことです。視覚的な表示なしにバックグラウンドで実行できます。tracヘッドレスブラウザは、時間とリソースを節約しながら、Webアプリケーションを効率的かつ効果的にテストする方法を提供します。この記事では、ヘッドレスブラウザとは何か、ヘッドレスブラウザテストをいつ使用するか、そしてヘッドレスブラウザを使用してテストを実行する方法について探究します。 Selenium HtmlUnitDriverとPhantomJS。

ヘッドレスブラウザとは何ですか?

ヘッドレスブラウザはウェブブラウザです グラフィカル ユーザー インターフェイスなしこのプログラムは通常のブラウザと同じように動作しますが、実行中にGUIウィンドウは表示されません。

ヘッドレスブラウザドライバの例としては、以下のようなものがあります。

  • HTMLユニット
  • 幽霊
  • PhantomJS(非推奨)
  • ゾンビJS
  • Watir-ウェブドライバー
  • ヘッドレスクローム
  • ヘッドレス Firefox

ヘッドレス ブラウザ テストをいつ使用するか?

今日のデジタル時代において、Webアプリケーションは幅広いデバイスやプラットフォームとの互換性を考慮して構築されています。そのため、開発者はアプリケーションが様々な環境でシームレスに動作することを保証しなければならず、課題を抱えています。ヘッドレスブラウザテストは、グラフィカルユーザーインターフェースを使用せずにWebアプリケーションを検証できるため、理想的なソリューションです。ヘッドレスブラウザテストを利用することで、開発者は多くのコンポーネントと依存関係を持つ複雑なWebアプリケーションを迅速にテストでき、開発速度の向上、バグの削減、そしてユーザー満足度の向上につながります。

ヘッドレスブラウザのテスト Selenium

Selenium は、ヘッドレス ブラウザ テスト用の強力なツールであり、開発者は目に見えるユーザー インターフェイスなしで自動テストを実行できます。テストをバックグラウンドで実行することで、 Selenium 時間とリソースを節約しながら、ping 従来のUIベースのテスト環境では明らかにならない可能性のある問題を特定できます。これには、ヘッドレス環境でのみ明らかになるパフォーマンスやレイアウトの問題が含まれます。ただし、テストを網羅的に実施するためには、ヘッドレステストと従来のUIベースのテストのバランスを取ることが重要です。

ヘッドレス ブラウザの一般的な例

ヘッドレスブラウザは数多く存在し、それぞれに独自の機能と利点があり、さまざまな用途に適しています。以下では、それらについて解説します。

ファントムJS

廃止のお知らせ: PhantomJS のアクティブな開発は 2018 年に停止し、プロジェクトはもはやメンテナンスされていません。新しいプロジェクトでは、ヘッドレス Chrome、ヘッドレス ブラウザの使用を推奨します。 Firefoxまたは 劇作家 最新のヘッドレス自動化向け。以下のPhantomJSのサンプルは参考用です。

PhantomJS は WebKit をレンダリング エンジンとして使用し、HTML5、CSS3、および などの Web 標準をサポートするヘッドレス ブラウザです。 Javaスクリプト。画面キャプチャやページ自動化タスクに使用できます。オープンソースであり、複数のオペレーティングシステムに対応しています。

の例 Selenium ヘッドレスPhantomJSで Python:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Chrome

Chromeは世界で最も人気のあるブラウザであり、ヘッドレスモードも提供しています。多くのプラットフォームで使用でき、主要なプログラミング言語やフレームワークをサポートしています。組み込みのデバッグツールと充実したドキュメントにより、テスト中に発生する可能性のある問題のトラブルシューティングが容易です。

ヘッドレス Chrome の例 Selenium in Python:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless')  # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Firefox

Firefox は、テスト用のヘッドレスブラウザとしても使用できる人気のウェブブラウザです。 Firefox ヘッドレスブラウザとしての利点は、軽量なフットプリントであり、さまざまなオペレーティングシステムでのテストに汎用性の高いオプションとなっています。豊富なドキュメントとコミュニティサポートと相まって、 Firefox ヘッドレスブラウザの自動化を試しているチームにとって、優れた選択肢です。

ヘッドレスの例 Firefox   Selenium in Python:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless')  # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

ヘッドレスブラウザテストの利点

  • テスト実行の高速化
  • 費用対効果の高いテスト
  • テストカバレッジの向上
  • テストの実行における柔軟性
  • CI/CDパイプラインとの統合が容易

ヘッドレスブラウザテストの欠点

  • 手動検査用の視覚的なGUIがない
  • 画面がないとデバッグが難しくなる
  • ブラウザ固有の動作に関するカバー範囲は限定的です。

HTMLユニットドライバー

HtmlUnitDriver は、最も軽量で高速なヘッドレス ブラウザの実装です。 Selenium WebDriver。HtmlUnitをベースにしており、 ヘッドレスブラウザドライバーChrome、IE、または Firefox ドライバーですが、GUIがないため、テストの実行は画面に表示されません。HtmlUnitDriverは引き続きメンテナンスされており、 org.seleniumhq.selenium:htmlunit3-driver Mavenアーティファクト。

HtmlUnitDriverの機能:

  • HTTPS および HTTP プロトコルのサポート
  • HTMLレスポンスのサポート(リンクのクリック、フォームの送信、HTMLドキュメントのDOMモデルの走査など)
  • Cookie のサポート
  • プロキシサーバーのサポート
  • 基本認証と NTLM 認証のサポート
  • コールテン Javaスクリプト 対応
  • GETおよびPOST送信メソッドのサポート
  • サーバーに送信されるリクエストヘッダーをカスタマイズする機能
  • サーバーからの応答が失敗した場合に、例外をスローするか、適切なタイプのページとして返すかを制御する機能

HtmlUnitDriver を使用する手順 Selenium

ステップ1) In Eclipse以下のコードをコピーしてください。標準を追加します Selenium プロジェクトにライブラリファイルを追加します。追加のJARファイルは必要ありません。

package  htmldriver;
import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.htmlunit.HtmlUnitDriver;		
public class htmlUnitYest {				
		public static void main(String[] args) {
                     // Creating a new instance of the HtmlUnit driver
                      
                     WebDriver driver = new HtmlUnitDriver();
                      
           		     // Navigate to Google		
                     driver.get("http://www.google.com");					
          
					 // Locate the searchbox using its name		
                     WebElement element = driver.findElement(By.name("q"));	
                     
                    // Enter a search query		
                    element.sendKeys("Guru99");	
                   
		            // Submit the query. WebDriver searches for the form using the text input element automatically		
                    // No need to locate/find the submit button		
                    element.submit();			
                    
            		// This code will print the page title		
                    System.out.println("Page title is: " + driver.getTitle());		
                    
                    driver.quit();			
         }		
}

ステップ2) コードを実行します。 ブラウザは起動されず、結果はコンソールに表示されることが確認できます。

HtmlUnitDriverを使用する手順 Selenium

HtmlUnitDriverの利点

  • GUIを使用しないため、テストは視覚的な中断なしにバックグラウンドで実行されます。
  • 他のドライバインスタンスと比較して、実行速度が速い
  • HtmlUnitDriver を介してテストを実行する際に、異なるブラウザバージョンをエミュレートすることもできます。
  • プラットフォームに依存せず、複数のテストを同時に実行しやすい。 負荷テスト.

制限事項:

  • 完全にエミュレートすることはできません Java実際のブラウザエンジンのスクリプト動作

ファントムJS

リマインダー: PhantomJS は非推奨となり、メンテナンスも終了しました。新しいヘッドレス作業には、 Selenium ヘッドレス Chrome または Firefoxまたは、劇作家のセクションに移動してください。以下のセクションは、過去の記録のためにのみ残されています。

PhantomJSはヘッドレスブラウザで、 JavaスクリプトAPI。従来はヘッドレスWebサイトのテスト、Webページへのアクセスと操作などに使用され、標準のDOM APIが付属しています。

PhantomJS を使用するには SeleniumGhostDriverが必要です。 ゴーストドライバー これは、WebDriver Wire Protocol のプレーンな実装です。 JavaPhantomJS用のスクリプト。

PhantomJSの後のリリース 統合された GhostDriverなので 別途インストールする必要はありません。

システムの仕組みは次のとおりです。

ファントムJS

ランニングの手順 Selenium PhantomJSを使用

ステップ1) あなたが必要です Eclipse   Selenium インストールされています。

ステップ2) PhantomJSをダウンロード こちら.

実行する手順 Selenium PhantomJSを使用

ステップ3) ExtracダウンロードしたフォルダをProgram Filesフォルダに入れてください。

実行する手順 Selenium PhantomJSを使用

ステップ4) PhantomJS ドライバーを次からダウンロードします。 こちらプロジェクトにJARファイルを追加してください。

実行する手順 Selenium PhantomJSを使用

ステップ5) 以下のコードを貼り付けてください Eclipse.

package htmldriver;	
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;	

public class phantom {				
		public static void main(String[] args) {
        	        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");				
                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());		
                    WebDriver driver = new PhantomJSDriver();	
                    driver.get("http://www.google.com");         
                    WebElement element = driver.findElement(By.name("q"));	
                    element.sendKeys("Guru99");					
                    element.submit();         			
                    System.out.println("Page title is: " + driver.getTitle());		
                    driver.quit();			
           }		
}

ステップ6) コードを実行してください。コンソールに結果が表示されますが、ブラウザは起動しません。

注: 初回実行時には、設定によってはセキュリティ警告が表示される場合があります。 Windows PhantomJSの実行を許可するには、クリックしてください。 アクセスを許可します.

実行する手順 Selenium PhantomJSを使用

多くの組織はこれまで、以下のようなタスクにPhantomJSを使用してきました。

  • ヘッドレステスト
  • 画面キャプチャ
  • ページ自動化
  • ネットワーク
  • ユーザー向けにダッシュボードのスクリーンショットを表示する
  • コマンドラインで単体テストを実行する
  • HTMLからPDFへの従業員ハンドブックの生成
  • テストスイートにQUnitを組み合わせる

新しい作業では、これらの PhantomJS の使用例をヘッドレス Chrome、ヘッドレス FirefoxまたはPlaywrightは、継続的なセキュリティおよびレンダリングのアップデートを受けています。

よくあるご質問

ヘッドレスブラウザとは、グラフィカルユーザーインターフェースなしで動作するウェブブラウザのことです。 SeleniumHtmlUnitDriver、ヘッドレス Chrome、ヘッドレスなどのヘッドレスドライバー Firefox テストをバックグラウンドで実行することで、リソースを節約し、自動化スイートの処理速度を向上させることができます。

いいえ。PhantomJSの開発は2018年に中止され、現在はメンテナンスされていません。 Selenium また、最近のリリースから PhantomJSDriver を削除しました。新しいテストではヘッドレス Chrome、ヘッドレス Firefoxあるいは、劇作家。

HtmlUnitDriverは純粋な Java エンジンは非常に高速で、ブラウザバイナリは不要ですが、制限があります Javaスクリプトの忠実度。ヘッドレス Chrome は実際の Blink エンジンを使用するため、最新の Javaスクリプトを多用するサイトは、リソース使用量が増えるという代償を伴いながらも、正確に表示される。

  Selenium ヘッドレス Chrome またはヘッドレス Firefox ブラウザごとの正確なテストには、これらのツールを使用するか、Playwright を採用してクロスブラウザの自動化を並行して実行してください。これらのツールは、セキュリティアップデートが定期的に提供され、DevTools Protocol やネットワーク傍受などの最新機能をサポートしています。

AI搭載ツールは、DOMの変更時にロケーターを自動修復したり、不安定なテストを予測したり、スクリーンショットを分析してビジュアルリグレッションを検出したりできます。これにより、CIにおけるヘッドレス実行の失敗が減り、QAチームが安定した状態を維持できるようになります。 Selenium 手作業による介入が少ないパイプライン。

はい。最新のAIアシスタントは生成できます。 Selenium WebDriver スクリプト Java, Pythonまたは JavaChrome のヘッドレスオプションを含む、平易な英語の手順からのスクリプト、または FirefoxCIで実行する前に、生成されたコードが正しい待機処理、セレクタ、およびセキュリティ対策が施されているか必ず確認してください。