Selenium 自动化测试中各个Page Object之间的跳转
Page Object:1. 首页
2.登陆页
3.产品详情页
4.创建订单页
总共四个页面,创建一个用例:
打开首页后,登录后又回到首页,然后点击首页的一个产品l<li>,进入产品详情页,在产品详情页,点击确认下单,进入创建订单页。在创建订单页,点击加入购物车。 这样的一个流程用例。
我目前把HomePage, LoginPage,ProductDeatilPage,CreateOrderPage都写好了,Page里面的各种元素操作也写好了。
但是各个页面之间的跳转让我很迷惑,不知道怎么创建一个整体的用例
求助大神。
用例就按你操作步骤来写
比如你上面的购物流程,可以分为2个用例:1个登录的用例,1个加入购物车的用例
写一个单独的测试类,分为两个测试方法,一个登录,一个加入购物车
看你登录是在哪个页面进行登录,先进入到登录的page类,执行登录操作。
比如下面我测试的APP是先打开APP,进入“我的”页面,用例里面通过配置文件传参,获取需要登录的用户名和密码
//登录方法
@Test
@Parameters({"oldUserName","oldPassWord"})
public void myPageLoginApp(String oldUserName,String oldPassWord) {
//打开APP,点击“我的”
MainPage.clickMyButton();
//点击“我的”页面的登录按钮
MyPage.clickLogin();
//输入用户名密码登录
MyPage.loginApp(oldUserName,oldPassWord); //登录的具体操作步骤在MyPage类里面去写,如下所示
//登录是否成功校验
Assert.assertEquals(oldUserName, MyPage.verify().getLoginSuccessText());
}
MyPage.java里面的登录方法
/**
* 输入用户名密码,点击登录
* @param name
* @param password
*/
public void loginApp(String name,String password){
Driver.findElementById(“xxxx_name_id”).sendKeys(name);
Driver.findElementById(“xxxxx_pwd_id”).sendKeys(password);
Driver.findElementById(“xxxx_loginBtn_id”).click();
}
在你的测试类里面写一个加入购物车的用例,类似登录的用例
//创建订单
@Test
public void creatOrder() {
//打开APP,点击首页的产品1
HomePage.点击产品1();
//在产品详情页点击下单
ProductDeatilPage.点击确认下单();
//进入创建订单页面,加入购物车
CreateOrderPage.点击加入购物车();
//校验是否加入购物车
Assert.校验();
}
最后看用的什么测试框架,我用的testng框架,那么在配置文件里面创建执行顺序
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite">
<listeners>
<listener class-name="framework.TestListener" />
</listeners>
<!-- 生产环境变量 -->
<parameter name="oldUserName" value="13888888888"/>
<parameter name="oldPassWord" value="Pass1234"/>
<test name="HW-8">
<parameter name = "port" value = "4723"/>
<parameter name = "udid" value = "D5F0218825000446"/>
<parameter name = "wdaPort" value = "8001"/>
<classes>
<class name="testcase.mycadillac.PersonalCenterTest">
<methods>
<include name="myPageLoginApp"/>
<include name="modifyPwd"/>
</methods>
</class>
</classes>
</test>
</suite>
传递同一个webdriver对象,或者后一个page=前一个page的点击调用。 :victory: 传递同一个webdriver对象,或者后一个page=前一个page的点击调用
页:
[1]