what is headless browser
このチュートリアルでは、ヘッドレスブラウザーとは何か、その利点、例、およびSeleniumを使用したヘッドレスブラウザーのテストについて説明します。また、HtmlUnitDrvierについても学習します。
過去数年間で、WebはシンプルなWebサイトから美しいUIで構築された高度なWebサイトに進化してきました。つまり、最近のJavaScriptはWebを非常にうまく制御しているため、Webサイトでのほぼすべての対話を処理できます。
今日、ブラウザは非常に効率的で、JavaScriptの処理方法を簡単に理解できることがわかります。 JavaScriptと連携して、ブラウザがプログラムで処理されます。ヘッドレスブラウザは、私たちの取り組みを改善するため、Webブラウザのテストに非常に役立つと考えられています。
APIテストの面接の質問と回答
学習内容:
ヘッドレスブラウザとは何ですか?
ヘッドレス–ああ、そうです、あなたはそれを正しく読んでいます。ヘッドレスとは、ユーザーインターフェイスのないWebブラウザを意味します。詳述すると、ヘッドレスブラウザは実際にWebページにアクセスするブラウザですが、GUIはユーザーから隠されています。
ヘッドレスブラウザは他のブラウザと同じですが、唯一の違いは画面に何も表示されないことです。ここでは、プログラムは実際にはバックエンドで実行されており、画面には何も表示されないと言えます。したがって、ヘッド/ GUIのないものであることが知られています。
通常のブラウザと同様に、ヘッドレスブラウザは、プログラムに従ってすべての手順を実行することにより、リンクのクリック、ページのナビゲート、ドキュメントのダウンロード、ドキュメントのアップロードなどのすべての機能を実行します。
通常のブラウザはGUIプレゼンテーションを使用してプログラムの各ステップを続行しますが、ヘッドレスブラウザの場合、プログラムのすべてのステップは順番に正しく実行され、コンソールまたはコマンドを使用して追跡できます。ラインインターフェース。
ヘッドレスブラウザの利点
#1) ヘッドレスブラウザは、マシンにGUIがない場合、つまりLinux(GUIのないOS)を使用しているときにコマンドラインインターフェイスを介して実行され、実際に表示するインターフェイスがない場合に使用されます。
#二) また、これらは何も表示する必要がなく、すべてのテストが1行ずつ正常に実行されていることを確認することだけを目的としている場合に使用できます。
#3) 並列テストを実行する必要がある場合、UIベースのブラウザは大量のメモリやリソースを消費します。したがって、ここではヘッドレスブラウザを使用することをお勧めします。
#4) 継続的インテグレーションを使用して次のリリースの回帰テストを実行する必要があり、クロスブラウザーテストが完了している場合は、ヘッドレスブラウザーテストを使用できます。
#5) 1台のマシンで複数のブラウザーをシミュレートしたり、データ作成のためだけにテストケースを実行したりする場合は、ヘッドレスブラウザーを使用します。
#6) 実際のブラウザと比較すると、ヘッドレスブラウザの方が高速です。したがって、これらはより高速な実行のために選択されます。
ヘッドレスブラウザのデメリット
#1) ヘッドレスブラウザは非常に高速ですが、それでもいくつかの欠点があります。ページの読み込みが高速であるため、問題のデバッグが難しい場合があります。
#二) 実際のブラウザテストには、GUIの存在下でのテストケースの実行が含まれます。また、これらのテストはユーザーの前で実行されるため、ユーザーはGUIを参照してチームと対話し、変更や修正が必要な場所について話し合うことができます。このような場合、ヘッドレスブラウザは使用できません。
#3) ヘッドレスブラウザはGUIを表していないため、スクリーンショットを使用してエラーを報告するのは面倒です。スクリーンショットはテストに必須であるため、リアルブラウザはスクリーンショットを生成することで欠陥を提示するのに役立ちます。
Chromeでswfを実行する方法
#4) 多くのブラウザのデバッグが必要な場合、ヘッドレスブラウザの使用は難しい場合があります。
ヘッドレスブラウザの例
利用可能なさまざまなヘッドレスブラウザがあります。
以下にいくつかの例を示します。
- Htmlユニットブラウザ
- Firefox
- クロム
- PhantomJS
- Zombie.js
- TrifleJS
- SlimerJS
- スプラッシュ
- SimpleBrowser
- NodeJS
Seleniumを使用したヘッドレステスト
Seleniumは、無料のオープンソーステストツールです。これは、自動化テストを実行するための非常によく知られた効率的な自動化ツールです。
Seleniumを使用すると、Firefox、Chrome、Internet Explorer、Opera、Safariなどの多数のブラウザーをサポートすることで、Java、Python、C#、Ruby、Perl、Scalaなどのさまざまな言語でテストスクリプトを記述でき、Windowsで実行できます。 、Linux、およびmacOS。
Selenium Webdriverは、ページ自体がリロードされることなくさまざまなWeb要素が変更される動的Webページを適切にサポートします。
ヘッドレスChromeとFirefox
FirefoxとChromeブラウザの両方が、GUIなしのFirefoxとChromeでのコードの実装であるヘッドレス自動化テストをサポートしています。
ヘッドレスFirefoxの例
ヘッドレスFirefoxは、56以降のバージョンをサポートし、Windows、Linux、およびmacOSで使用できます。 Firefoxの最新バージョンのgeckodriver.exeファイルをダウンロードし、使用するバージョンがサポートされている最小バージョンよりも大きいことを確認する必要があります。 Firefoxは、headless()メソッドを介してヘッドレスモードで実行されます。
ヘッドレスモードのFirefoxブラウザのコードを見てみましょう。
package headless_testing; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class HeadlessFirefox { public static void main(String() args) { // TODO Auto-generated method stub System.setProperty('webdriver.gecko.driver',' E://Selenium/latest firefox exe/geckodriver.exe'); FirefoxOptions options = new FirefoxOptions(); options.setHeadless(true); WebDriver driver = new FirefoxDriver(options); driver.get('www.google.com/'); System.out.println('Executing Firefox Driver in Headless mode..
'); System.out.println('>> Page Title : '+driver.getTitle()); System.out.println('>> Page URL : '+driver.getCurrentUrl()); } }
上記のコードをFirefoxブラウザでヘッドレスモードで実行すると、ページのタイトルとそのURLが表示されます。コードはヘッドレスモードで実行され、コンソールで追跡できます。
ヘッドレスFirefoxがSeleniumでサポートされているように、SlimmerJSとW3CWebDrierでも動作します。
ヘッドレスクロームの例
ヘッドレスChromeは、Chromeバージョン60以降をサポートし、Windows、Linux、およびmacOSで使用できます。 Chromeブラウザの最新バージョンの.exeファイルをダウンロードする必要があります。
ヘッドレスモードでChromeを使用するための構文は次のとおりです。
ChromeOptions options = new ChromeOptions(); options.addArguments(“--headless”); OR options.setHeadless(true);
ヘッドレスモードのChromeブラウザのコードを見てみましょう。
package headless_testing; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class HeadlessChrome { public static void main(String() args) { // TODO Auto-generated method stub System.setProperty('webdriver.chrome.driver','E://Selenium/latest chrome exe/chromedriver.exe'); ChromeOptions options = new ChromeOptions(); options.addArguments('--headless'); WebDriver driver = new ChromeDriver(options); driver.get('www.google.com/'); System.out.println('Executing Chrome Driver in Headless mode..
'); System.out.println('>> Page Title : '+driver.getTitle()); System.out.println('>> Page URL : '+driver.getCurrentUrl()); } }
ヘッドレスモードでChromeブラウザに対して上記のコードを実行すると、ページのタイトルとそのURLが表示されます。コードが実行され、コンソールで実行を追跡できます。
ヘッドレスHtmlUnitDriver
HtmlUnitDriverとは何ですか?
HtmlUnitDriverは、Javaで記述されたヘッドレスWebブラウザです。名前は、それがHtmlUnitに基づくヘッドレスドライバーであることを示唆しています。 HtmlUnitDriverは、SeleniumWebDriverに組み込まれているヘッドレスブラウザーです。これは、最も軽量で高速なブラウザと見なされています。
HtmlUnitDriverの実装に移りましょう。 HtmlUnitDriver JARファイルは、Seleniumの公式Webサイトからダウンロードできます。
.jarファイルを実行する方法
ヘッドレスモードのHtmlUnitDriver
他のすべてのブラウザーと同様に、HtmlUnitDriverについても、ヘッドレスモードでコードを実行するためにクラスのオブジェクトを作成する必要があります。
package headless_testing; import org.openqa.selenium.WebDriver; import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class HtmUnitDriver { public static void main(String() args) { // TODO Auto-generated method stub WebDriver driver = new HtmlUnitDriver(); driver.get('https://www.google.com/'); System.out.println('Executing HtmlUnitDriver in Headless mode..
'); System.out.println('>> Page Title : '+ driver.getTitle()); System.out.println('>> Page URL : '+ driver.getCurrentUrl()); } }
したがって、ヘッドレスモードでHtmlUnitDriverに対して上記のコードを実行すると、受信した出力にページのタイトルとそのURLが表示されます。出力はコンソールを介して受信され、プログラムで実行されたすべての機能を段階的に表示できます。
以下に、上記で実行したコードのスクリーンショットを示します。
HtmlUnitDriverの機能/利点
(画像 ソース )
- HTTPSおよびHTTPプロトコルのサポートを提供します。
- JavaScriptの優れたサポート。
- マルチタスクを支援し、それによって複数のテストを実行できるようにします。
- Cookieのサポートを提供します。また、プロキシサーバーをサポートします。
- WebDriverの実装が最速であるため、テストスクリプトのパフォーマンスと速度が向上します。
- HtmlUnitDriverはプラットフォームに依存しません。
- デフォルトではヘッドレスであるため、ヘッドレステストをサポートしています。
HtmlUnitDriverのデメリット
- HtmlUnitDriverは、複雑なWebサイトでは使用できません。
- 実際のブラウザテストと比較すると、HtmlUnitDriverのようなヘッドレスブラウザの場合、スクリプトのデバッグが非常に困難になります。
- スクリーンショットの生成は、HtmlUnitDriverでは不可能です。
- ヘッドレスブラウザは他のブラウザをエミュレートします。
結論
ヘッドレスブラウザのテストは、優れた速度と効率を提供することで実際には高速ですが、非ヘッドレス/リアルブラウザによって実際に実行されるいくつかの特定の機能には到達できません。
ヘッドレスブラウザには独自の利点がありますが、リアルブラウザには独自の利点があります。テストの必要性に応じて、テスターにとって好ましく、有益な手法を選択できます。
例えば: ユーザーの関与がある場合は、リアルブラウザテストを選択できます。テストを迅速に実行するためのUIプレゼンテーション要件がない場合は、ヘッドレスブラウザテストに進むことができます。
より効率的なテストは、ヘッドレスとリアルブラウザの両方を組み合わせたテストです。これにより、それぞれの制限を個別に克服します。
このチュートリアルで、ヘッドレスブラウザとヘッドレスブラウザのテストに関するすべてのクエリが明確になったことを願っています。
推奨読書
- Gebチュートリアル-Gebツールを使用したブラウザ自動化テスト
- Parrot QAチュートリアル:クロスブラウザ機能テストツールのレビュー
- Browserstackチュートリアル:アプリとブラウザーのテストプラットフォーム(ガイド)
- IEテスターチュートリアル-InternetExplorerブラウザテストオンライン
- Tricentis FloodElementを使用した実際のブラウザでの負荷テスト
- Seleniumグリッドチュートリアル:クロスブラウザテストのセットアップと例
- 2021年のトップ10クロスブラウザテストツール(最新ランキング)
- クロスブラウザテストとは何ですか、それを実行する方法:完全ガイド