Selenium实例 Demo

结构:
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);
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值