debugging selenium scripts with logs selenium tutorial 26
今、私たちは最も包括的な終わりに向かって動いています Seleniumテストツールの無料チュートリアル 。現在投稿しているチュートリアルは、事前のSeleniumトレーニングの一部です。
前のチュートリアルでは、 ハドソンという名前の継続的インテグレーションツール 。これは無料のツールであり、テストプロジェクトを構築し、テストクラスをリモートで実行し、合格および不合格のテストケースに関するアプリケーションのステータスを通知する通知メールを関係者に送信するための多くの機能を備えています。
現在のチュートリアルでは、直接的または間接的に役立ついくつかの高度な概念に向かって動きます 自動化フレームワークの最適化 そして、ユーザーにより多くの可視性をもたらします。
したがって、現在のチュートリアルでは、 ロギング機能、その可能性、デバッグ機能 とはるかに。
ロギングは、既存のスクリプト作成メカニズムのオーバーヘッドと見なされる場合がありますが、専門家は、次の利点があるため、正確な比率で使用する場合、それをベストプラクティスの1つと見なします。
Seleniumスクリプトにログインする利点:
- テストスイートの実行を完全に理解できるようにします
- ログメッセージは、実行後の精査のために外部ファイルに保存できます
- ログは、プログラム実行の問題と失敗をデバッグする際の優れたアシスタントです。
- ログを確認して、利害関係者がアプリケーションの状態を確認することもできます
学習内容:
Log4j –JavaベースのロギングAPI
ロギングに関する技術的な詳細に移り、全体で使用するAPIの起源について説明しましょう。 log4jチュートリアル ログを生成します。 Log4jは、ヨーロッパのSecure Electronic Marketplaceの人々が協力して、ログの生成に役立つユーティリティを開発した結果、1996年にlog4jが脚光を浴びました。Log4jはオープンソースツールであり、IBM PublicLicenseの下でライセンスされています。
log4jの実装を構成する3つの主要なコンポーネントがあります。これらのコンポーネントは、ログレベル、レンダリングされるログメッセージの形式、および保存メカニズムに関する詳細を表します。
Log4jの構成要素
- ロガー
- アペンダー
- レイアウト
#1)ロガー
プロジェクトにロガーを実装するには、次の手順を実行する必要があります。
ステップ1 :Loggerクラスのインスタンスを作成する
ステップ2 :ログレベルの定義
ロガークラス –これはJavaベースのユーティリティであり、log4jを使用できるように、すべてのジェネリックメソッドがすでに実装されています。
ログレベル –ログレベルは、一般に印刷方法として知られています。これらは、ログメッセージを印刷するために使用されます。ログレベルには主に5種類あります。
- エラー()
- warn()
- info()
- デバッグ()
- ログ()
したがって、ログを生成できるようにするには、ロガーインスタンスを介して任意の印刷メソッドを呼び出すだけです。実装段階で、より広範囲に調査します。
#2)アペンダー
これらのログを生成する方法がわかったので、次に頭に浮かぶのは、ログをどこで表示できるかということです。この質問に対する答えは、「アペンダー」の定義にあります。
アペンダーは、ログを生成するデータソース/メディアを指定するために一貫して使用されます。データソースの範囲は、コンソール、GUI、テキストファイルなどのさまざまな外部メディアから広がります。
#3)レイアウト
ユーザーは、特定の情報を各ログステートメントの前に追加または追加したい場合があります。たとえば、ログステートメントと一緒にタイムスタンプを印刷したいとします。したがって、このような要件は「レイアウト」によって実現できます。
レイアウトは、ユーザーがログをレンダリングする目的の形式を選択できるようにするユーティリティです。アペンダーとレイアウトは、それらの間で緊密に結合しています。したがって、各アペンダーを特定のレイアウトでマップする必要があります。
ユーザーが複数のアペンダーを定義するために活用され、各アペンダーが異なるレイアウトでマップされていることに注意してください。
log4jとそのコンポーネントの基本を理解したので、実装現象に焦点を合わせます。
実装プロセス全体を段階的に理解しましょう。
ddos攻撃を送信する方法
インストール/セットアップ
インストールとセットアップについては、このシリーズの以前のセッションですでに作成した「Learning_Selenium」プロジェクトを検討します。
ステップ1 :最初の最も重要なステップは、log4jAPIの最新のjarをダウンロードすることです。瓶は公式の配布ウェブサイトで簡単に見つけることができます–「 http://logging.apache.org/log4j/1.2/download.html 」。
ステップ2 :次のステップは、ビルドパスを構成し、log4j.jarを外部ライブラリとして提供することです。
実装
log4jを使用したロギングは、次の2つの方法で実装および構成できます。
- スクリプトを介してプログラムで
- 構成ファイルを介して手動で
上記の構成方法には、長所と短所があります。このチュートリアルでは、その容易さと単純さに基づいて、構成ファイルを介してlog4jを手動で構成することを検討します。構成ファイルは、log4jに関連する成果物を構成するためのさらに別のXMLファイルです。
log4j.xmlファイルの作成
ステップ1 。 log4j.xmlファイルを作成します。以下のコードをコピーして構成ファイルに貼り付けます。
構成ファイルのウォークスルー
consoleAppender
コンソールアペンダーは、コンソールにログステートメントを出力するために使用されます。
ファイルアペンダー
ファイルアペンダーは、外部ファイル内のログステートメントを印刷するために使用されます。ユーザーを利用して、追加されたタグのオンとオフの値を設定します。これにより、以前に作成されたタグにステートメントを追加してログに記録するか、以前に作成されたログを上書きして新しいログを完全に生成するようにシステムに指示します。
'append' value= 'false' />
ファイルパラメータの値は特定の場所に設定され、その場所に予想されるログファイルを作成するようにシステムに通知します。また、valueパラメーター内でログファイル名を指定します。
レイアウト
このチュートリアルの最初のセクションで説明したように、レイアウトはログステートメントのレンダリングメカニズムを指定するために使用されます。 Log4jは、さまざまなレイアウトパターンを提供します。ユーザーは、ConversionPatternパラメーターの値に目的のパターンを指定するために活用されます。
上記のレイアウトの出力は次のようになります。
01-07-2014 12:56:32情報(GmailLogin):サンプルログメッセージ
上記の出力では:
- 最初のフィールド–実行日
- 2番目のフィールド–テストステップが実行された正確な時間(hh:mm:ss)
- 3番目のフィールド–ログレベルの1つ
- 4番目のフィールド–テストクラスの名前
- 5番目のフィールド–ログメッセージ
ステップ2 。 log4j.XMLファイルの作成が完了したら、次のステップはlog4j.XMLファイルをプロジェクトのルートフォルダー/ベースディレクトリに配置することです。
プログラムレベルの実装
ステップ3 :次のステップは、任意のコンフィギュレーターを使用して、log4j.xmlファイルを構成および解析することです。
構文:
package com.logExample; import org.apache.log4j.xml.DOMConfigurator; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.RunWith; import org.junit.runner.notification.Failure; import org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses({ Demo.class }) public class TestSuite { /** * Setup method to set system property for log file name */ @BeforeClass public static void Setup() { // loading log4j.xml file DOMConfigurator.configure('log4j.xml'); } /** * @param args */ public static void main(String() args) { Result result = JUnitCore.runClasses(TestSuite.class); for (Failure failure : result.getFailures()) { System.out.println('
TEST NAME: ' + failure.getTestHeader()); System.out.println('
ERROR: ' + failure.getMessage() + '
'); System.out.println(failure.getTrace()); System.exit(1); } } }
注意 :ログは、テストスイートレベルではなく、クラスレベルでも実装できます。あなたがする必要があるのは、テストスイートではなくテストクラスで必要な変更を加えることです。
ステップ4 :次のステップは、プロジェクトの下にテストクラス「GmailLogin.java」を作成することです。クラス内にGmailログイン機能を実装します。
ステップ5 :次のステップは、ログステートメントを実装できるようにロガークラスをインポートすることです。
構文:
import org.apache.log4j.Logger;
ステップ6 :プロセスの次のステップは、Loggerクラスのオブジェクトをインスタンス化することです。
構文:
//ログのオブジェクト初期化
静的 ログ ログ Logger.getLogger(デモ。 クラス .getName());
ステップ7 :上記で作成したLoggerタイプのログ変数は、テストクラス全体でログステートメントを生成するために使用されます。同じことについては、次のコードを参照してください。
構文:
@Test public void testGmailLogin() throws Exception{ // enter a valid email address driver.findElement(By.id('Email')).sendKeys('TestSelenium1607@gmail.com'); log.info('Entered a valid Email Address.'); // enter a invalid password driver.findElement(By.id('Passwd')).sendKeys('InvalidPassword'); log.info('Entered a invalid Password.'); // click on sign in button driver.findElement(By.id('signIn')).click(); log.info('Clicked on the Sign In Button.'); try{ //Verify the home page assertTrue('Verification Failed: User successfully landed on the Home Page.', driver.getTitle().equals('Gmail')); log.info('Verified that the user landed on the Home Page.'); } catch (Exception e) { log.error('Unsuccessfull Login.'); } }
ログファイルの結果
01-07-2014 12:56:11情報(GmailLogin):ファイルをシステムにアップロードしました:FileExample.txt
01-07-2014 12:56:11情報(GmailLogin):変更を送信します
01-07-2014 12:56:15エラー(GmailLogin):ログインに失敗しました。
2020年3月の更新
ログ
ログは、実行するトランザクションごとに記録または生成するメッセージです。ログを分析して、何が正しかったか間違っていたかを確認できます。システムが突然閉じた場合、ログを分析することで、障害の根本原因を突き止めることができると仮定します。
したがって、ログはすべての開発サイクルで生成されます。同様に、各テスト条件またはテストステートメントの前後にテストするためにSeleniumコードにログを生成して、すべてが期待どおりに機能しているかどうかを確認することもできます。
log4jフレームワーク
これらのログファイルをSeleniumコードで生成するには、Apacheが提供するlog4jフレームワークを使用します。このフレームワークを使用して、カスタマイズされたログを生成できます。
クリック ここに Mavenリポジトリからlog4jjarをダウンロードします。
ログは次の2つの方法で生成できます。
- log4j.propertiesファイルの使用
- log4j.xmlファイルの使用
これらのファイルには、生成するログの種類に関する構成が含まれています。それらのいずれかを使用できます。両方を使用する場合は、log4j.xmlの優先順位が高くなります。ログを生成するための推奨される方法は、プロパティファイルを使用することです。そのため、ここでは、プロパティファイルのみを使用した生成について詳しく説明します。
log4jの実装
上記のパスからlog4jjarファイルをダウンロードし、プロジェクトのビルドパスに追加します。スタンドアロンのJavaアプリケーションを使用している場合は、log4j.propertiesファイルを作成し、ソースフォルダーと並行してプロパティファイルを追加します。
メッセージでc ++アサート
Log4j.propertiesファイルは、キーと値のペアの値を格納する構成ファイルです。
3つの主要なコンポーネントが含まれています。
- ロガー: ロギング情報をキャプチャします。
- アペンダー :ログ情報を、コンソール、ファイル、ソケット、NTイベントログなどの別の優先宛先に公開します。
- レイアウト :ログ情報をHTML、XMLレイアウトなどのさまざまなスタイルでフォーマットします。
log4j.propertiesファイルの構文
#1) ロギングレベルINFOおよびアペンダーX (アペンダーは任意のコンソール、ファイル、ソケット、NTイベントログにすることができます)を使用してルートロガーを定義します。
log4j.rootLogger = INFO, X
#二) Xという名前のアペンダーをファイルアペンダーに設定します。
log4j.appender.X = org.apache.log4j.FileAppender
#3) Xアペンダーのレイアウトを定義します。
log4j.appender.X.layout = org.apache.log4j.PatternLayout log4j.appender.X.layout.conversionPattern = %m%n
log4j.propertiesの例
上記の構文を参照して、log4j.propertiesファイルを作成します。
#ルートロガーをレベルINFOで初期化し、stdoutとfoutを使用してコンソールに出力します。
log4j.rootLogger=INFO,stdout,fout
#ConsoleAppenderをロガーstdoutに追加して、コンソールに書き込みます。
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#定義された単純なメッセージ形式のレイアウトパターンを使用する%m%nは、ログメッセージを改行で出力します。
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n
#FileAppenderをロガーfoutに追加します。
log4j.appender.fout=org.apache.log4j.FileAppender
#アペンダーFILEはorg.apache.log4j.FileAppenderとして定義されています。 SoftwareTestingHelpという名前のファイルに書き込みます。
log4j.appender.fout.File=SoftwareTestingHelp.log
#より詳細なメッセージパターンを使用します。
log4j.appender.fout.layout=org.apache.log4j.PatternLayout log4j.appender.fout.layout.ConversionPattern=%p %d{ISO8601} %r %c (%t) %m%n
さまざまなレベルのロギング
- デバッグ
- 情報
- 警告
- エラー
- 致命的
各レベルには独自の優先順位があります。 「DEBUG」レベルを使用すると、INFO >> WARN >> ERROR >> FATALなどのすべてのレベルのメッセージがログに記録されるとします。
「ERROR」レベルを使用すると、DEBUG >> INFO >> WARNが無視され、ERROR >> FATALのみがログに記録されるとします。
これらすべてのレベルで、プロパティファイルで定義する必要があります。構成に応じて、ログが生成されます。
上記と同じ例のログを実装します。
ステップ1: Loggerクラスのオブジェクトを作成します。
final static Logger logger = Logger.getLogger(Frame.class);
上記のメソッドは、ロガーオブジェクトを取得するのに役立ちます。このメソッドは、クラスまたはクラスの名前のいずれかを引数として取ります。このロガーオブジェクトを使用して、カスタマイズされたログを生成できます。
この例では、apache log4jフレームワークを参照しました。TestNGフレームワークを使用している場合は、TestNGログクラスを使用する必要があります。
ここでは、プロパティファイルを実装せずにログを生成しようとしました。
コンソールまたは作成されたログファイルのいずれにもログは生成されません。ログファイルが正しく実装されていないため、コンソールにエラーが表示されます。これを実装するには、–PropertyConfiguratorクラスを使用する必要があります。手順2に従います。
ステップ2: Property Configuratorファイルを初期化し、log4jプロパティファイルの名前として引数を渡します。
PropertyConfigurator.configure(“ log4j.properties”);
ログファイル生成の完全なコード:
package com.wordpress.pages; import java.util.List; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; public class Frame { static WebDriver driver; final static Logger logger = Logger.getLogger(Frame.class); @Test public void Test(){ PropertyConfigurator.configure('log4j.properties.txt'); System.setProperty('webdriver.chrome.driver', 'D:\New folder\exe\chromedriver.exe'); logger.debug('Debug this path for chrome path issue'); driver = new ChromeDriver(); logger.info('Chrome driver is up and running'); driver.get('http://www.dwuser.com/education/content/the-magical-iframe-tag-an-introduction/'); logger.warn('Url is not loaded properly'); //identifying the frame using locator or say using webelement driver.switchTo().frame(driver.findElement(By.xpath('//div(@id='eduFooterWrap')//iframe(1)'))); logger.error('Frame is not available'); driver.findElement(By.xpath('//input(@name='name')')).sendKeys('SoftwareTestingHelp.com'); logger.fatal('Message not entered'); } }
プロパティファイル:
結論
現在のチュートリアルでは、 フレームワークにロギングを実装する際の技術的な意味。 log4jユーティリティを利用してロギングを実装しました。使いやすさの観点から、log4jを構成する基本的なコンポーネントについて説明しました。アペンダーとレイアウトを使用すると、ユーザーは目的のログ形式/パターンとデータソース/場所を選択するために活用されます。
このチュートリアルでは、テストでログが使用される理由と、ログを生成するためのSeleniumでのlog4jフレームワークの実装について説明します。
次のチュートリアル#27 :次のチュートリアルでは、に関連するいくつかのより高度なトピックについて説明します。 効率的なスクリプト作成とシナリオのトラブルシューティング ユーザーがマウスとキーボードのイベントを処理する必要がある場合。さらに、リストに複数のWeb要素を格納する方法についても説明します。
推奨読書
- 初心者向けの詳細なEclipseチュートリアル
- Selenium WebDriverの概要– Seleniumチュートリアル#8
- 効率的なSeleniumスクリプティングとトラブルシューティングシナリオ– Seleniumチュートリアル#27
- Cucumber Seleniumチュートリアル:Cucumber Java SeleniumWebDriverの統合
- 30以上の最高のSeleniumチュートリアル:実際の例でSeleniumを学ぶ
- Seleniumスクリプトを構築するためにChromeおよびIEブラウザーで要素を見つける方法– Seleniumチュートリアル#7
- 最初のWebDriverスクリプトの実装– Selenium WebDriverチュートリアル#10
- Eclipseを使用したWebDriver全体のセットアップとインストール– Seleniumチュートリアル#9