7
我重構了我的java項目來定義WebElement選擇器作爲常量。這允許我將By常量傳遞給findElement方法,而不需要評估方法中的By選擇器類型。這是一個好主意嗎?如果將By變量定義爲公共靜態最終常量,我可能會遇到什麼問題?Selenium WebDriver - 將WebElement選擇器定義爲By常量是一個好主意?
下面是一個例子:
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;
}
謝謝您的回覆,我最關心的是,如果沒有定義可變爲靜態常量最後一個問題。 –
這是一個良好實踐的原因是:1.它可以防止元素在測試中被更改,從而導致不良測試的可能性; 2.它使您在測試頂部的中心位置將選擇器語句更改爲你的元素,如果他們改變,和3.它會更快(但誰真的在乎,它是足夠快)。 – CorayThan