当我们以脚本的形式编写了大量的自动化测试代码后,很容易发现代码可读性太差了、任何一个测试脚本几乎毫无扩展能力或者说扩展起来只能修改边边角角、一旦被测系统的UI层发生变化对于测试代码的修改来说简直就是灾难性的,整个自动化工程几乎毫无结构可言,当面临这些问题的时候实际上已经失去了一部分自动化测试原有的职能 任何自动化测试团队在开展自动化测试这项活动的之前,必须考虑的是这项活动的ROI,自动化测试的本职是解放人力,基于前边所述的常见情况不仅仅其ROI非常低,也违背了自动化的初衷 基于这个大背景下,常规的自动化测试活动必须引入PO模式,它是一种自动化测试的设计模式,也是一种解耦的思想即:以页面为单位,将页面中的控件及控件的动作逐一提炼,从而在测试脚本中可以直接使用,其最终目的是使得元素定位表达式 而分离后的测试代码,具有极高的可复用性、可读性,可维护性,可扩展性,而这像极了面向对象思想更像极了Java里Spring的MVC模式和Django的MTV模式 结合Java的单元测试框架TestNG完成测试脚本编写页面对象
测试代码三者分离定义页面类
package PageObjects; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.FindBy; import org.openqa.selenium.support.PageFactory; import org.testng.Assert; public class LoginPage { //使用FindBy注解,定位到要操作的页面元素, 此处用的xpath,也可以用其他的类型 @FindBy(xpath = "//*[@name='email']") public WebElement userName; @FindBy(xpath = "//*[@name='password']") public WebElement passWord; @FindBy(xpath = "//*[@id ='dologin']") public WebElement loginButton; public String url = "https://mail.126.com"; public String title= "网易免费邮箱"; public WebDriver driver; //构造函数,生成浏览器对象,初始化PageFactory对象 public LoginPage(){ driver = new ChromeDriver(); PageFactory.initElements(driver, this); } public void load(){ this.driver.get(url); } public void quit(){ driver.quit(); } public void login(){ driver.switchTo().frame(driver.findElement(By.xpath("//*[@id='x-URS-iframe']"))); userName.sendKeys("davieyang99@126.com"); passWord.sendKeys("alex005x"); loginButton.click(); } public WebDriver getDriver(){ return driver; } public void isLoaded()throws Error{ Assert.assertTrue(driver.getTitle().contains(title)); } }
简洁的测试脚本
package TestScripts; import org.testng.Assert; import org.testng.annotations.Test; import org.openqa.selenium.WebDriver; import PageObjects.LoginPage; public class Test126mail { private WebDriver driver; /*private String baseUrl="https://mail.126.com"; @BeforeMethod public void beforeMethod(){ driver = new ChromeDriver(); }*/ @Test public void testLogin() throws InterruptedException { LoginPage loginpage = new LoginPage(); loginpage.load(); Thread.sleep(1000); loginpage.login(); Thread.sleep(3000); /* loginpage.userName.sendKeys("davieyang99"); loginpage.passWord.sendKeys("alex005x"); loginpage.loginButton.click(); */ Assert.assertTrue(loginpage.getDriver().getPageSource().contains("邮件")); loginpage.quit(); } /*@AfterMethod public void afterMethod(){ driver.quit(); }*/ }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算