7

Java プロジェクトをリファクタリングして、WebElement セレクターを By 定数として定義しました。これにより、メソッドで By セレクター タイプを評価する必要なく、By 定数を findElement メソッドに渡すことができます。これは良い考えですか?By 変数を public static final 定数として定義すると、どのような問題が発生する可能性がありますか?

次に例を示します。

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

1 に答える 1

4

これは良い習慣です。

PageObject で使用できます。例を参照してください。

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

于 2013-06-06T09:26:27.023 に答える