测试积点老人 发表于 2018-10-10 10:41:53

Selenium 自动化测试中各个Page Object之间的跳转

Page Object:
1. 首页
2.登陆页
3.产品详情页
4.创建订单页
总共四个页面,创建一个用例:
打开首页后,登录后又回到首页,然后点击首页的一个产品l<li>,进入产品详情页,在产品详情页,点击确认下单,进入创建订单页。在创建订单页,点击加入购物车。 这样的一个流程用例。

我目前把HomePage, LoginPage,ProductDeatilPage,CreateOrderPage都写好了,Page里面的各种元素操作也写好了。
但是各个页面之间的跳转让我很迷惑,不知道怎么创建一个整体的用例
求助大神。

鹏鹏666666 发表于 2018-10-10 14:36:33

用例就按你操作步骤来写
比如你上面的购物流程,可以分为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>



海海豚 发表于 2018-10-11 11:49:51

传递同一个webdriver对象,或者后一个page=前一个page的点击调用。

jingzizx 发表于 2018-10-11 13:15:21

:victory:

梦想家 发表于 2018-10-11 14:14:23

传递同一个webdriver对象,或者后一个page=前一个page的点击调用
页: [1]
查看完整版本: Selenium 自动化测试中各个Page Object之间的跳转