- 浏览: 7292 次
文章分类
最新评论
结构:
1 定义Page类
2 定义DriverManager类
3 定义TestCase类
4 定义ItemManager类
其中:
1 LoginPage类继承Page类
步骤如下:
1 创建页面对象,并根据操作步骤,完成代码
2 根据操作,记录操作结果
3 对比操作结果和预期结果
使用框架:
1 junit4
2 testNG
1 定义Page类
2 定义DriverManager类
3 定义TestCase类
4 定义ItemManager类
其中:
1 LoginPage类继承Page类
步骤如下:
1 创建页面对象,并根据操作步骤,完成代码
2 根据操作,记录操作结果
3 对比操作结果和预期结果
使用框架:
1 junit4
2 testNG
import org.openqa.selenium.support.PageFactory; public class Page { public Page(){ PageFactory.initElements(DriverManager.getDriver(), this); } }
import org.openqa.selenium.By; import org.openqa.selenium.WebElement; public class LoginPage extends Page { private static final String URL = "http://localhost:52452/icloudboss/"; // WebDriver driver; /** * 只有homepage之类的起始页才必要有这个init方法用来打开URL。 return this 表示执行完毕之后页面仍旧在本页。 * 如果留在本页,并有页面刷新,就要return new JDHomepage 如果没有页面刷新等页面改变,就return this * 如果跳转到其他页面,就return new xxxPage 这样写的好处,是每个方法的return语句上明确了页面跳转的预期结果 Only the */ // 初始化 public LoginPage init() { DriverManager.getDriver().get(URL); return this; } // 退出 public void quit() { DriverManager.quitDriver(); } //获取输入框元素,并 输入字符 public void inputText(String id, String value) { WebElement element = DriverManager.getDriver().findElement(By.id(id)); element.sendKeys(value); } public void inputTextYaml(String key, ItemManager item, String value) { WebElement element = item.getElement(key, DriverManager.getDriver()); element.sendKeys(value); } //获取按钮元素,并点击按钮 public void clickButtonWithItem(String buttonID, ItemManager item) { // WebElement element = DriverManager.getDriver().findElement( // By.id(buttonID)); WebElement element = item.getElement(buttonID, DriverManager.getDriver()); element.click(); } public void clickButton(String buttonID) { WebElement element = DriverManager.getDriver().findElement( By.id(buttonID)); element.click(); } // 获取页面字符串 public String getTextWithItem(String ID, ItemManager item) { // WebElement element = DriverManager.getDriver().findElement( // By.id(ID)); WebElement element = item.getElement(ID, DriverManager.getDriver()); return element.getText(); } public String getText(String ID) { WebElement element = DriverManager.getDriver().findElement(By.id(ID)); return element.getText(); } // 获取页面字符串 public String findSysName(String className) { return DriverManager.getDriver().findElement(By.className(className)) .getText(); } }
import java.io.File; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriverService; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.events.EventFiringWebDriver; public class DriverManager { public static ThreadLocal<WebDriver> threadDriver = new ThreadLocal<WebDriver>(); public static String browserType = "firefox"; static String chromePath = "E:/Driver/chromedriver.exe"; static String driverTpye = "webdriver.chrome.driver"; /** * 根据TestCase的要求来指定浏览器类型但不创建他 save the browser type but not create it * * @param browser * :浏览器名字 */ public static void setupDriver(String browser) { browserType = browser; } /** * 关浏览器,Windows上需要在这里杀进程的步骤 quit the driver */ public static void quitDriver() { getDriver().quit(); System.out.println(getDriver().toString()); DriverManager.threadDriver.set(null); } public static WebDriver getDriver() { WebDriver driver = DriverManager.threadDriver.get(); if (driver == null) { if (browserType == "firefox") { driver = new EventFiringWebDriver(new FirefoxDriver()) .register(new LogEventListener()); threadDriver.set(driver); DriverManager.getDriver().manage().timeouts() .implicitlyWait(3, TimeUnit.SECONDS); } else if (browserType == "chrome") { System.setProperty(driverTpye, chromePath); ChromeDriverService service = new ChromeDriverService.Builder() .usingDriverExecutable(new File(chromePath)) .usingAnyFreePort().build(); try { service.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } driver = new RemoteWebDriver(service.getUrl(), DesiredCapabilities.chrome()); } } System.out.println(driver.toString()); return driver; } }
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.HashMap; import org.ho.yaml.Yaml; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; public class ItemManager { public String yamlFile; // 初始化yaml文件名称 public ItemManager(String fileName) { yamlFile = fileName; this.getYamlFile(); } public HashMap<String, HashMap<String, String>> ml; // 获取yaml文件内容 @SuppressWarnings("unchecked") public void getYamlFile() { File f = new File("demo/" + yamlFile + ".yaml"); try { ml = Yaml.loadType(new FileInputStream(f.getAbsolutePath()), HashMap.class); System.out.println(ml.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } } // 获取BY对象 public By getBy(String type, String value) { By by = null; if (type.equals("id")) { by = By.id(value); } if (type.equals("name")) { by = By.name(value); } if (type.equals("xpath")) { by = By.xpath(value); } if (type.equals("className")) { by = By.className(value); } if (type.equals("linkText")) { by = By.linkText(value); } return by; } // 获取元素对象 public WebElement getElement(String key, WebDriver driver) { String type = this.ml.get(key).get("type"); String value = this.ml.get(key).get("value"); return driver.findElement(this.getBy(type, value)); } }
import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class LoginPageTestJunit4 extends TestCase { LoginPage tLoginPage; ItemManager item; @Before public void createLoginPage(){ tLoginPage = new LoginPage(); tLoginPage.init(); item = new ItemManager("login"); item.getYamlFile(); System.out.println("==================="+item.ml); } @After public void deleteLoginPgae(){ tLoginPage.quit(); } @Test public void loginPageCheckTest(){ String expectedResult = "云管理平台"; String ActualResult ; ActualResult = tLoginPage.findSysName("iWRIS_word"); Assert.assertEquals(expectedResult, ActualResult); } @Test public void LoginPageLoginActionTest(){ String expectedResult ="super@hongdian.com" ; String actualReslut ; //直接在测试代码中写入元素 // tLoginPage.inputText("u_name", "super@hongdian.com"); // tLoginPage.inputText("u_pwd", "1"); //使用yaml文件管理页面元素 tLoginPage.inputTextYaml("username_input", item, "super@hongdian.com"); tLoginPage.inputTextYaml("pwd_input", item, "1"); tLoginPage.clickButtonWithItem("button_ID",item); actualReslut = tLoginPage.getTextWithItem("text_id",item); Assert.assertEquals(expectedResult, actualReslut); } }
import java.lang.reflect.Method; import org.testng.AssertJUnit; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.DataProvider; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class LoginPageTestNG { LoginPage tLoginPage; ItemManager item; @BeforeClass public void createLoginPage() { tLoginPage = new LoginPage(); tLoginPage.init(); item = new ItemManager("login"); item.getYamlFile(); } @AfterClass public void deleteLoginPgae() { tLoginPage.quit(); } // 使用@Parameters方式参数化读取XML @Test @Parameters({ "key1", "key2", "userName", "pwd", "expectedResult", "buttonID", "id" }) public void LoginPageLoginActionTest(String key1, String key2, String userName, String pwd, String expectedResult1, String buttonID, String id) { String expectedResult = expectedResult1; String actualReslut; System.out.println(buttonID + id); tLoginPage.inputTextYaml(key1, item, userName); tLoginPage.inputTextYaml(key2, item, pwd); tLoginPage.clickButtonWithItem(buttonID, item); actualReslut = tLoginPage.getTextWithItem(id, item); AssertJUnit.assertEquals(expectedResult, actualReslut); } // 使用@DataProvider方式参数化 @DataProvider(name = "LoginTest") public Object[][] createUser(Method m) { System.out.println(m.getName()); return new Object[][] { { "u_name", "u_pwd", "xxxx", "xxxx", "xxxxx", "imageDiv", "uName" } }; } @Test(dataProvider = "LoginTest") public void LoginPageLoginActionTest2(String key1, String key2, String userName, String pwd, String expectedResult1, String buttonID, String id) { String expectedResult = expectedResult1; String actualReslut; System.out.println("参数 : " + key1 + key2 + userName + pwd + expectedResult1 + buttonID + id); tLoginPage.inputText(key1, userName); tLoginPage.inputText(key2, pwd); tLoginPage.clickButton(buttonID); actualReslut = tLoginPage.getText(id); AssertJUnit.assertEquals(expectedResult, actualReslut); } }
发表评论
-
关于 MySQL数据库性能对比试验demo
2016-02-18 23:05 698关于MySQL 数据库性能对比试验demo的计划 第一部分 1 ... -
socket测试脚本
2014-07-13 16:14 0socket测试脚本 -
zenoss操作
2014-06-03 16:27 0zenoss的相关小结 -
httpclient demo 登陆
2014-05-08 23:47 523使用httpclient完成简单web登陆demo i ... -
VisualVM 使用实例
2014-04-30 14:42 1847VisualVM概述 VisualVM 是一款免费的 ... -
DBUnit实例 SC测试总结(二)--数据库测试DBunitDemo
2014-04-08 18:09 990测试结构如下: 1 定义测试数据 2 将测试数据导入到数据 ... -
DBUnit实例 SC测试总结(一)--数据库测试Demo
2014-04-01 13:57 692做数据库测试时,一般使用jmeterJDBC或者直连数据库执行 ... -
MongoDB操作
2014-03-24 21:03 379import java.io.IOException; ... -
testNG实例
2014-03-24 20:46 638import static org.hamcrest.Ma ... -
se chorme驱动 (转载)
2014-03-24 11:03 449import java.io.File; import ja ...
相关推荐
python实现selnium自动化测试,web呈现测试报告
selenium java实例 selenium java实例 selenium java实例
Selenium_Demo:这是Selenium的演示
1、使用HTMLTestRunner生成测试报告; 2、添加测试套件,运行一个文件执行所有测试用例; 3、只在测试执行前打开浏览器,所有用例执行结束后关闭浏览器。(解决反复启动/关闭driver导致的执行效率问题) ...
selenium3.0 webdriver+python3.0实例自学参考
selenium实例,采用java语言编写,实现selenium-RC
selenium自动化执行的demo,可以简单的启动chrome,firefox,IE三大浏览器
概述这是一个Selenium实践演示项目测验带有有效用户名和密码的登录页面用户名和密码无效的登录页面具有有效用户名和无效密码的登录页面去做测试将商品添加到购物车测试结帐流程
Selenium各种案例
selenium+JAVA+chrome自动化测试demo
Selenium Core实例所用的JavaScript代码
昨天群里有朋友问我selenium入门例子,我今天抽了点时间写了一段简单的代码,此代码适合刚刚学习selenium的人员参考,此代码是selenium2 RC 调用chrome driver访问百度,输入Jack_test 搜索. 代码里面含资源包:selenium...
selenium webdriver2 一个完整demo
Robot Framework 安装指南 http://blog.sina.com.cn/s/blog_654c6ec70100tkxn.html 使用Robot Framework 测试 Ajax http://blog.sina.com.cn/s/blog_654c6ec70100u456.html 使用Robot framework 测试web ...
Selenium演示 Selenium自动化测试框架 最近有打算用python重写一下,感兴趣的朋友可以叉首先需要安装python,之后安装selenium lib pip install -U selenium 使用Selenium 3.x + Testng + Jenkins + Maven 使用...
selenium+java实例,简单操作录制
一个使用自动化测试工具selenium写的实例及浏览器驱动。使用方法及说明请看我的博客https://blog.csdn.net/u010740917/article/details/89487033
自动化测试selenium实例,在ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32],Rails 1.2.2环境下测试通过. 工程可直接运行,相关的测试代码在工作目录\public\selenium\tests下
selenium webdriver实现页面对象实例,一个简单的查询功能!
Selenium_Demo