2016-10-07 1 views
0

je tente de me connecter cliquez sur événements, maisComment écouter ce qui a été cliqué dans le test?

Exemple:

bouton

en classe d'objets page:

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

cliquez dans le test

searchPage.btnClear().click(); 

forestière Listner:

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

cliquez sur Listener:

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

que je veux:

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

Est-il possible de mettre en œuvre? Je n'ai pas besoin de localisateur d'élément de journal, car il a parfois un nom illisible, j'ai besoin d'enregistrer mon propre nom pour l'élément d'objet page

Merci.

Répondre

0

Essayez ce code (étant donné que vous utilisez l'interface WebDriverEventListner)

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

OU

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

comme je l'ai dit avant je n'ai pas besoin de localiser LOCATOR ou ses attributs. J'ai besoin du nom du journal pour l'élément d'objet page btnClear –

+0

Essayez la réflexion comme élément.getClass(); –

0

Ce que je voulais dire:

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; 
     } 
    } 

} 

et le rapport a des valeurs nécessaires:

Sending keys: 200006862315 to: fldAccountIdFrom 
clicked: btnInvoice 
clicked: btnResource