java - Selenium WebDriver - 将 WebElement 选择器定义为 By 常量是个好主意吗?

标签 java selenium-webdriver

我重构了我的 java 项目以将 WebElement 选择器定义为 By 常量。这允许我将 By 常量传递到我的 findElement 方法中,而不需要在方法中评估 By 选择器类型。这是一个好主意吗?如果将 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;
}

最佳答案

这是一个很好的做法。

您可以将它与 PageObject 一起使用,请参见示例:

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

关于java - Selenium WebDriver - 将 WebElement 选择器定义为 By 常量是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16945834/

相关文章:

javascript - 如何使用 Selenium 和 Java 更改元素样式属性的显示属性

java - Spring boot @ExceptionHandler 未捕获子类异常

java - 我想从jsp上的 Controller 方法获取 session 值。有人可以帮我看看我该怎么做吗

java - 在STS中安装Spring示例

java - 如何在 selenium Web 驱动程序中获取跨度类值的属性

java - 使用 TestNG 进行并行测试 - 测试仅在一种浏览器上运行

java - 设计实现代码: static or dynamic?

java - 无法在 Linux 上运行 jnetpcap

javascript - 什么时候应该使用 getInnerHtml() 方法?

python - 如何使用 Selenium 和 Python 将文本发送到电子邮件字段