ヘッドレス ブラウザ Selenium (HTMLUnitDriver)

ヘッドレス ブラウザは、グラフィカル ユーザー インターフェイスを持たない Web ブラウザです。 視覚的に邪魔にならずにバックグラウンドで実行できます。 時間とリソースを節約しながら、Web アプリケーションをテストする効率的かつ効果的な方法を提供します。 このチュートリアルでは、ヘッドレス ブラウザとは何か、ヘッドレス ブラウザのテストをいつ使用するか、Selenium を使用してテストを実行する方法について詳しく説明します。

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

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

ヘッドレス ドライバーの例としては、次のようなものがあります。

  • HTMLユニット
  • 幽霊
  • ファントムJS
  • ゾンビJS
  • Watir ウェブドライバー

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

今日のデジタル時代では、Web アプリケーションは幅広いデバイスやプラットフォームと互換性を持つように開発されています。 これは、アプリケーションがこれらのプラットフォーム間でシームレスに動作することを保証する必要がある Web サイト開発者にとって、しばしば課題となります。 ヘッドレス ブラウザ テストは、開発者がグラフィック ユーザー インターフェイスを必要とせずに Web アプリケーションをテストできるため、この問題に対する理想的な解決策です。 ヘッドレス ブラウザ テストを使用すると、開発者は簡単に com をテストできます。plex 複数のコンポーネントと依存関係を持つ Web アプリケーションを開発し、より迅速な開発、バグのないコード、そしてユーザーの満足度を高める道を切り開きます。

Selenium を使用したヘッドレス ブラウザのテスト

Selenium はヘッドレス ブラウザ テスト用の強力なツールです。wing 開発者は、目に見えるユーザー インターフェイスを必要とせずに自動テストを実行できます。 Selenium はバックグラウンドでテストを実行することで、時間とリソースを節約できると同時に、従来の UI ベースのテスト環境では明らかではない問題の特定にも役立ちます。 これには、ヘッドレス設定でのみ明らかになるパフォーマンス関連の問題やレイアウトの問題が含まれます。 ただし、ヘッドレス テストの制限を念頭に置き、従来の UI ベースの方法とバランスをとって、包括的なテスト カバレッジを確保することが重要です。

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

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

ファントムJS

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

Python のヘッドレス PhantomJS を使用した Selenium の例

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 は地球上で最も人気のあるブラウザであり、ヘッドレス機能も提供します。 複数のプラットフォームで使用でき、プログラミング言語とフレームワークをサポートします。 組み込みのデバッグ ツールと広範なドキュメントにより、テスト中に発生する可能性のある問題の使用とトラブルシューティングが簡単になります。

Python で Selenium を使用したヘッドレス Chrome の例

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 は、テスト目的でヘッドレス ブラウザとしても使用できる人気の Web ブラウザです。 利用するメリットの一つに、 Firefox ヘッドレス ブラウザは軽量であるため、さまざまなオペレーティング システムでテストするための多用途のオプションになります。 さらに、広範なドキュメントとコミュニティ サポートにより、 Firefox ヘッドレス ブラウザ テクノロジを試してみたい人にとっては、優れた選択肢です。

ヘッドレスの例 Firefox Python で Selenium を使用する

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ユニットドライバー

HTML UnitDriver は、WebDriver の中で最も軽量かつ最速の実装ヘッドレス ブラウザです。 HtmlUnitをベースにしています。 として知られています ヘッドレスブラウザドライバー。 ChromeやIEなどと同じです FireFox ドライバーですが、GUI がないため、画面上でテストの実行を確認できません。

HTMLユニットドライバの特徴

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

Selenium で HTMLUnit ドライバーを使用する手順

ステップ1) In Eclipse、以下をコピーしますwing コード。 標準 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 HTML unit 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) コードを実行します。 ブラウザが起動せず、結果がコンソールに表示されることがわかります。

Selenium で HTMLUnit ドライバーを使用する手順

HTML ユニット ドライバーの利点:

  • テストに GUI を使用しないため、テストは視覚的に中断されることなくバックグラウンドで実行されます。
  • 他のすべてのインスタンスと比較して実行が高速です
  • HtmlUnit ドライバーを介してテストを実行するには、他のブラウザ バージョンを選択することもできます
  • プラットフォームに依存しないため、複数のテストを同時に実行するのが簡単です。 理想的な 負荷テスト.

制限事項:

  • 他のブラウザの JavaScript 動作をエミュレートすることはできません

ファントムJS

PhantomJS は、JavaScript API を備えたヘッドレス ブラウザです。 これは、ヘッドレス Web サイトのテスト、Web ページへのアクセスと操作に最適なソリューションであり、標準の DOM API が付属しています。

Seleniun で PhantomJS を使用するには、GhostDriver を使用する必要があります。 ゴーストドライバー PhantomJS 用のシンプルな JS での Webdriver Wire プロトコルの実装です。

Ph の最新リリースatomJSには 統合された ゴーストドライバーと 別途インストールする必要はありません。

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

ファントムJS

Ph で Selenium を実行する手順atomJS

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

ステップ2) PhantomJSをダウンロード こちらをご覧ください。

Ph で Selenium を実行する手順atomJS

ステップ3) ダウンロードしたフォルダーをProgram Filesに解凍します。

Ph で Selenium を実行する手順atomJS

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

Ph で Selenium を実行する手順atomJS

ステップ5) 以下を貼り付けますwing コードイン 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 の実行を許可します。 「アクセスを許可」をクリックします。

Ph で Selenium を実行する手順atomJS

多くの組織では、Phantom.JS をさまざまな目的に使用しています。

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

まとめ

視覚的に中断されることなく、さまざまなブラウザでアプリケーションを迅速にテストするには、ヘッドレス ブラウザを使用します。 テスト 使用されている。 HTML ユニット ドライバーと PhantomJS は、その速度、正確さ、アクセスしやすい機能により、ヘッドレス ブラウザ自動テストで人気が高まっています。 フォローしてくださいwing いくつかの簡単な手順を実行すると、これらのツールが他のツールといかに簡単に統合でき、テスト コードを実行できるかを知ることができます。