java制作网易邮箱登录页面_Page Object实例(一) - Java + Selenium 登录163邮箱

本文介绍了Page Object设计模式在Selenium中的应用,通过实例展示了如何使用Java编写登录163邮箱的代码。主要包括LoginPage、HomePage类的定义,以及LoginTest测试用例的编写,用于验证登录成功和失败的情况。
摘要由CSDN通过智能技术生成

Page Object 是什么:

Page Object(selenium wiki)是Selenium2开始提供的一种代码设计模式. 其核心思想是把web页面的元素查找及操作和页面测试分离开. 这样之后的更新和维护中如果有页面元素变动, 不需要修改测试类, 只要修改其对应的页面元素的查找代码即可.

登录163邮箱的实例包括:

35c05e9c1ce73a3d3f75188d77599141.png

其中:

1. LoginPage.java 是主要测试页面, 包括查找元素, 操作元素实现登录

2. HomePage.java 是登录成功后会跳转到的页面, 在此用来作为登录操作方法的返回值及拿个元素验证登录成功, 更多的是可以接着对此页面进行测试

3. LoginTest.java用来执行登录页面的测试, 可以包括验证登录成功/失败或其他测试用例

4. SeleniumInit.java 用来起driver, 里面可以放起不同浏览器的方法

实例代码:

LoginPage.java

1 importorg.openqa.selenium.By;2 importorg.openqa.selenium.WebDriver;3 importorg.openqa.selenium.WebElement;4 importjava.util.List;5 importjava.util.concurrent.TimeUnit;6

7 public classLoginPage {8 WebDriver driver;9

10 publicLoginPage(WebDriver driver) {11 this.driver =driver;12 }13

14 publicHomePage login(String user, String pwd) {15 //隐式等待页面的加载

16 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);17 WebElement accountLogin = driver.findElement(By.id("lbNormal"));18 accountLogin.click();19 //进入frame

20 List iframes = driver.findElements(By.tagName("iframe"));21 String id = iframes.get(0).getAttribute("id");22 if (id != null) {23 driver.switchTo().frame(id);24 }25 WebElement loginEmail = driver.findElement(By.name("email"));26 WebElement loginPassword = driver.findElement(By.name("password"));27 WebElement loginButton = driver.findElement(By.id("dologin"));28 loginEmail.sendKeys(user);29 loginPassword.sendKeys(pwd);30 loginButton.click();31 //跳出frame

32 driver.switchTo().defaultContent();33 //登录成功后跳转到新页面, 新页面的元素及处理和当前页面分离

34 return newHomePage(driver);35 }36 }

HomePage.java

1 importorg.openqa.selenium.By;2 importorg.openqa.selenium.WebDriver;3 importorg.openqa.selenium.WebElement;4

5 public classHomePage {6 WebDriver driver;7

8 publicHomePage(WebDriver driver) {9 this.driver =driver;10 }11

12 //判断登录是否成功的方法, 当前页面类似收发邮件可另加方法

13 public booleanidExists() {14 WebElement userID = driver.findElement(By.id("spnUid"));15 System.out.println(userID.getText());16 returnuserID.isDisplayed();17 }18 }

LoginTest.java

1 importorg.openqa.selenium.WebDriver;2 importorg.openqa.selenium.support.PageFactory;3 importorg.testng.Assert;4 importorg.testng.annotations.Test;5 importpo.selenium.pages.HomePage;6 importpo.selenium.pages.LoginPage;7 importpo.selenium.utils.SeleniumInit;8

9 public classLoginTest {10 String URL = "https://mail.163.com/";11 @Test12 public voidTC001_LoginSuccess() {13 String user = "邮箱账号";14 String pwd = "邮箱密码";15 SeleniumInit seleniumInit = newSeleniumInit();16 WebDriver driver =seleniumInit.getFFDriver();17 try{18 driver.get(URL);19 LoginPage loginPage = newLoginPage(driver);20 PageFactory.initElements(driver, loginPage);21 HomePage homePage =loginPage.login(user, pwd);22 Assert.assertTrue(homePage.idExists(), "login failed");23 } catch(Exception e) {24 e.printStackTrace();25 } finally{26 driver.quit();27 }28 }29

30 @Test31 public voidTC002_LoginFailedWithWrongPwd() {32 String user = "邮箱账号";33 String pwd = "错误的邮箱密码";34 SeleniumInit seleniumInit = newSeleniumInit();35 WebDriver driver =seleniumInit.getFFDriver();36 try{37 driver.get(URL);38 LoginPage loginPage = newLoginPage(driver);39 PageFactory.initElements(driver, loginPage);40 //同一个页面, 同一个方法可以进行不同的测试

41 HomePage homePage =loginPage.login(user, pwd);42 Assert.assertTrue(homePage.idExists(), "login failed");43 } catch(Exception e) {44 e.printStackTrace();45 } finally{46 driver.quit();47 }48 }49 }

以上就是Page Object 的页面与操作与测试分离的思想, 主要用来展示页面分离的思想, 还有类似页面元素和操作耦合在一起, URL这类信息暴露不方便统一维护等问题, 之后一一解决.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值