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;
}
grazie per la risposta, la mia preoccupazione principale è che se c'è un problema che definisce la variabile come una costante finale statica. –
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