java - 在 POM 中使用 By - Selenium

标签 java selenium testng abstract-class

我一直在练习使用 Selenium 的 POM 设计方法(使用数据驱动和 testNg 框架);

我最近看到一位 selenium 自动化开发人员使用 POM,脚本中既没有 @FindBy 也没有 PageFactory

在 selenium 脚本中使用“By”时我不明白的内容如下:

By element_name = By.id("String");

'By'是一个抽象类(如selenium -- java api文档中提到的),id、classname、name、xpath等方法都是静态方法;

基于这些事实,抽象类和静态方法是如何直接实现的?

下面是我正在谈论的代码。

public TrialLoginPage(WebDriver driver, Properties prop) {

     super(driver, prop);

    }

    By name = By.name("username");
    By password = By.name("password");
    By submit = By.xpath("//input[@type='submit']");

    public String getTitle() {

        String title = driver.getTitle();
        return title;
    }

    public WebElement setUserName() {

        WebElement element = driver.findElement(name);

        return element;
    }

    public WebElement setPassword() {

        WebElement element = driver.findElement(password);
        return element;
    }

    public WebElement setSubmit() {

        WebElement login = driver.findElement(submit);
        return login;
    }

    public String driverStatus() {

        String str = driver.toString();
        return str;
    }   
}

最佳答案

Byabstract class ,它可以有带有实现的方法,抽象的唯一限制是它不能被实例化,例如调用new By()

it may or may not include abstract methods. Abstract classes cannot be instantiated

您正在调用 name 方法,该方法不是抽象的,返回 By 对象:

public static By name(java.lang.String name)

关于java - 在 POM 中使用 By - Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346700/

相关文章:

java - 在开发java桌面应用程序中创建和使用数据库

java - 访问属性文件 : Java and Linux

java - Selenium Marionette 驱动程序在第二次启动时出现 UnreachableBrowserException

java - 带 testNG 的 spring 没有子类化

java - 没有为 EntityManager 命名的持久性提供程序 - 当尝试从 weblogic 控制台部署时

java - 泽西客户端 : too many Conent-Type header values

java - Eclipse TestNG java.lang.AssertionError

java - 如何在 testNG 中使控制流从一个测试类到另一个测试类?

java - 如何获取我的 WATIR 项目的 root 权限?

java - Selenium JAVA 中的 TestNG 注释问题