2016-07-02 2 views
3

私は、selenium driverオブジェクトによって実行されるすべてのアクションをログに記録する方法を見つけようとしています。 Log4jが一般的に推奨される解決策です。だから、私はログインする必要がどこにログステートメントを持っている必要がセレン - 実行されているすべてのステップをログに記録する方法?

driver.findElement(By.name("opt1")).sendKeys("km"); 
log.debug("selecting distance unit"); 
driver.findElement(By.name("opt2")).sendKeys("10"); 
log.debug("selecting distance value"); 

- しかし、専用のログステートメントは、以下のようにログに追加する必要があります。セレンドライバーの行動を追跡し、一般的なログを記録するものはありますか?

+0

ネイティブログは私がまさに探していものです。私は多くを検索しましたが、関連する投稿は見つかりませんでした。ありがとうございました。 – nivasan89

+0

'Testng'や' JUnit'を使うと良いでしょう – Madhan

答えて

0

セレンサーバを使用する予定の場合は、実行が開始されるとノード端末を観察し、各ステップを詳細に記録します。 browserstackは私が推測するこの技術を使用しています。

0

使用しているWebDriverクラスを拡張し、ログ関数をオーバーライドすると、この関数は各関数呼び出しの前と後に呼び出されます。

例:

import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.remote.SessionId; 

public class MyWebDriver extends ChromeDriver { 
    @Override 
    protected void log(SessionId sessionId, String commandName, Object toLog, When when) { 
     System.out.println("LOG: sessionId: " + sessionId + " when: " + when + " commandName: " + commandName + " toLog: " + toLog); 
     super.log(sessionId, commandName, toLog, when); 
    } 
} 

このコードは次のようになります出力が得られます:

LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: BEFORE commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@hint='Username']}] 
LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: AFTER commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@hint='Username']}] 
LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: BEFORE commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@id='Password']}] 
LOG: sessionId: 70521460-9ccf-4619-97ea-e7be4717a9b8 when: AFTER commandName: findElement toLog: [70521460-9ccf-4619-97ea-e7be4717a9b8, findElement {using=xpath, value=//*[@id='Password']}] 
関連する問題