在POM中使用By-硒

时间:2018-09-15 16:34:14

标签: java selenium testng abstract-class

我一直在针对硒使用POM设计方法(具有数据驱动和testNg框架)进行练习;

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

我在硒脚本中使用“按”不了解的内容如下:

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

1 个答案:

答案 0 :(得分:2)

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

  

它可能包含也可能不包含抽象方法。抽象类无法实例化

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

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