PageObject Selenium

PageObject模式是一种在Selenium自动化测试中组织代码的常见方式,它将页面的操作和逻辑封装到独立的对象中,提供公共方法服务,避免直接暴露页面内部细节。这种方法不建议在页面对象中做断言,而是倾向于返回其他PageObjects。每个方法对应页面上的一个特定交互,即使这些交互可能产生不同的结果。
摘要由CSDN通过智能技术生成
  • 公共方法代表页面提供的服务
  • 尽量不要暴露页面的内部
  • 通常不做断言
  • 方法返回其他PageObjects
  • 无需代表整个页面
  • 相同动作的不同结果被建模为不同的方法

例子

public class LoginPage {
    private final WebDriver driver;

    public LoginPage(WebDriver driver) {
        this.driver = driver;

        //检查我们的页面是否正确。
        if (!"Login".equals(driver.getTitle())) {
            //或者,我们可以导航到登录页面,也许可以先注销
            throw new IllegalStateException("This is not the login page");
        }
    }

    //登录页面包含几个HTML元素,这些元素将表示为WebElements。
    //这些元素的定位器只应定义一次。
        By usernameLocator = By.id("username");
        By passwordLocator = By.id("passwd");
        By loginButtonLocator = By.id("login");

    //登录页面允许用户在用户名字段中键入用户名
    public LoginPage typeUsername(String username) {
        //这是唯一“知道”如何输入用户名的地方
        driver.findElement(usernameLocator).sendKeys(username);

        //返回当前页面对象,因为此操作不导航到由另一个页面对象表示的页面
        return this;	
    }

    public LoginPage typePassword(String password) {
        driver.findElement(passwordLocator).sendKeys(password);

        return this;	
    }

    //登录页面允许用户提交登录表单
    public HomePage submitLogin() {
        //这是唯一提交登录表单并期望目标为主页的地方。
        //应创建一个单独的方法,用于在预期登录失败时单击“登录”的实例
        driver.findElement(loginButtonLocator).submit();

        //返回表示目标的新页对象。登录页面是否
        //转到其他地方(例如,法律声明),然后更改方法签名        
        //因为这个方法意味着依赖于这个行为的所有测试都不会编译。
        return new HomePage(driver);	
    }

    //登录页面允许用户在知道输入了无效的用户名和/或密码的情况下提交登录表单    
    public LoginPage submitLoginExpectingFailure() {
        //这是唯一提交登录表单的地方,并且由于登录失败,希望目标是登录页面。
        driver.findElement(loginButtonLocator).submit();

        //返回表示目标的新页对象。用户是否应该在提交带有凭据的登录后导航到主页 
        //如果登录失败,脚本将在尝试实例化LoginPage PageObject时失败。
        return new LoginPage(driver);	
    }

    //从概念上讲,登录页面为用户提供了能够“登录”的服务
    //使用用户名和密码的应用程序。
    public HomePage loginAs(String username, String password) {
        //输入用户名、密码和提交登录名的PageObject方法已定义,此处不应重复。
        typeUsername(username);
        typePassword(password);
        return submitLogin();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值