100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java制作网易邮箱登录页面_Page Object实例(一) - Java + Selenium 登录163邮箱

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

时间:2018-12-03 00:16:55

相关推荐

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

Page Object 是什么:

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

登录163邮箱的实例包括:

其中:

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 = "/";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这类信息暴露不方便统一维护等问题, 之后一一解决.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。