2016-10-07 5 views
0

私は、イベントをクリックしログインしようが、テストでクリックしたものを聞くには?

例:ページオブジェクトのクラスで

ボタン:

public WebElement btnClear() { 
    return driver.findElement(By.name("filter:P_ClearButtonDFID")); 
} 

クリックテスト

searchPage.btnClear().click(); 

LISTNERログに:

Clicked on: [[InternetExplorerDriver: internet explorer on WINDOWS (1cf610ba-607c-40a2-94bc-745f1e564bde)] -> name: filter:P_ClearButtonDFID] 

クリックリスナー:

public void afterClickOn(WebElement element, WebDriver driver) {    
    System.out.println("clicked on: " + element.toString()); 
} 

は私が望むよう:

"Clicked: btnClear()" or "Clicked: btnClear" 

それが実現することは可能ですか? ログ要素のロケータは必要ありません。なぜなら、名前が判読できないことがあります。私はページオブジェクト要素に自分の名前を記録する必要があります。

ありがとう。

答えて

0

私は何を意味するのか

public void afterClickOn(WebElement element, WebDriver driver) {    
    System.out.println("clicked on: " + element.getAttribute("name")); 
} 

OR

public void afterClickOn(WebElement element, WebDriver driver) {    
    System.out.println("clicked on: " + element.getAttribute("id")); 
} 
+0

私が前に言ったように、私はログのロケータまたは属性を必要としません。 ページオブジェクト要素のログ名が必要です btnClear –

+0

element.getClass()のように反射してみてください。 –

0

(あなたがWebDriverEventListnerインターフェイスを使用している考慮して)このコードを試してみてください。

import org.openqa.selenium.WebElement; 
import org.openqa.selenium.remote.RemoteWebElement; 
import org.apache.log4j.Logger; 
import com.thoughtworks.selenium.webdriven.commands.IsElementPresent; 

public class WebElem extends RemoteWebElement { 
    private WebElement element; 
    private String  calleeMethod; 
    private String  tascase; 
    private Logger  logger; 

    public WebElem(WebElement elem) { 
     element = elem; 
     Throwable t = new Throwable(); 
     StackTraceElement[] elements = t.getStackTrace(); 
     calleeMethod = elements[1].getMethodName(); 
     tascase = elements[2].getClassName(); 

    } 

    @Override 
    public void click() { 
     logger = Logger.getLogger(tascase); 
     if (IsElementPresent() == true) { 
      if (element.isEnabled() == false) { 
       logger.info("element " + calleeMethod + " is disabled."); 
      } else { 
       element.click(); 
       logger.info("clicked: " + calleeMethod); 
      } 
     } else { 
      logger.error("element " + calleeMethod + " is not found."); 
     } 

    } 

    public void sendKeys(String string) { 
     logger = Logger.getLogger(tascase); 
     if (IsElementPresent() == true) { 
     } 
     if (element.isEnabled() == false) { 
      logger.error("element " + calleeMethod + " is disabled."); 
     } else { 
      element.sendKeys(string); 
      logger.info("Sending keys: " + string + " to: " + calleeMethod); 
     } 
    } 

    public void clear() { 
     element.clear(); 
    } 

    private boolean IsElementPresent() { 
     if (element != null) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

} 

とレポートが値を必要としています

Sending keys: 200006862315 to: fldAccountIdFrom 
clicked: btnInvoice 
clicked: btnResource 
関連する問題