2013-06-05 8 views
7

Ho rifattorato il mio progetto java per definire i selettori WebElement come Per costanti. Ciò mi consente di passare una costante al metodo findElement, senza richiedere una valutazione del tipo di selettore nel metodo. E 'questa una buona idea? Quali problemi posso incontrare se definisco le variabili By come costanti finali statiche pubbliche?Selenium WebDriver - La definizione dei selettori di WebElement è una costante idea?

seguente è un esempio:

public static final By LOGIN_BUTTON_SELECTOR = By 
     .cssSelector("input[name='logIn']"); 

/** 
* click the Login button 
*/ 
public void clickLoginButton() throws TimeoutException, 
     StaleElementReferenceException { 
    // click the Login button 
    clickElement(LoginPage.LOGIN_BUTTON_SELECTOR); 
} 

/** 
* 
* find an element 
* 
* click the element 
* 
*/ 
public void clickElement(By elementSelector) throws TimeoutException, 
     StaleElementReferenceException { 

    WebElement webElement = null; 

    // find the element by By selector type 
    webElement = getElement(elementSelector); 

    // click the element 
    webElement.click(); 

} 

/** 
* 
* generic method to get a WebElement using a By selector 
* 
*/ 
public WebElement getElement(By elementSelector) throws TimeoutException { 

    WebElement webElement = null; 

    // find an element using a By selector 
    getDriverWait().until(
    ExpectedConditions.presenceOfElementLocated(elementSelector)); 
    webElement = getDriver().findElement(elementSelector); 

    return webElement; 
} 

risposta

4

Si tratta di una buona pratica.

Si può usare con PageObject, vedi esempio:

https://code.google.com/p/selenium/wiki/PageObjects

+0

grazie per la risposta, la mia preoccupazione principale è che se c'è un problema che definisce la variabile come una costante finale statica. –

+0

Le ragioni per cui è una buona pratica sono le seguenti: 1. Impedisce che l'elemento venga modificato nel test, causando potenziali test errati, 2. Ti dà una posizione centrale nella parte superiore del test per modificare l'istruzione del selettore per i tuoi elementi se cambiano, e 3. Sarà più veloce (ma a chi importa davvero, è abbastanza veloce). – CorayThan

Problemi correlati