这个小节主要来介绍下另外一个用例实现,这个用例会涉及到多个页面跳转,相对来说会复杂点,用例如下:
所以这里还会涉及到资讯首页 、资讯详情页、收藏页的页面类抽取,现在抽取如下(暂时只抽取用例需要用到的控件及操作)
资讯首页我们需要封装点击资讯列表项的方法以及获取资讯标题的方法,因为我们首先要点击进入资讯详细页面才能去收藏该资讯,后续需要去校验是否收藏成功因此需要先记录下这个该资讯标题供后续对比使用。
资讯首页Page类抽取如下(在pages包下新建类编写如下代码):
package appium.pages;
import appium.common.Helper;
import org.openqa.selenium.WebElement;
public class PageNews {
private Helper helper;
public PageNews(Helper helper){
this.helper = helper;
}
//获取资讯标题的方法,index是指第几个资讯标题
public WebElement getNewsTitleTextView(int index){
return helper.findById("net.oschina.app:id/tv_title",index );
}
//点击第几个资讯标题的方法
public void clickNewsItem(int index){
helper.click(getNewsTitleTextView(index));
}
//获取第几个资讯标题文本的方法
public String getNewsTitle(int index){
return helper.getText(getNewsTitleTextView(index));
}
}
资讯详情页面我们暂时需要用到点击收藏按钮的方法
资讯详情页面Page类抽取如下(在pages包下新建类编写如下代码):
package appium.pages;
import appium.common.Helper;
import org.openqa.selenium.WebElement;
public class PageNewsDetail {
private Helper helper;
public PageNewsDetail(Helper helper){
this.helper = helper;
}
//封装收藏按钮
public WebElement getAddToFavoritesBtn(){
return helper.findById("net.oschina.app:id/iv_fav");
}
//点击收藏按钮的方法
public void clickAddToFavorites(){
helper.click(getAddToFavoritesBtn());
}
}
收藏页我们需要封装获取收藏列表指定资讯标题的值。
收藏页Page类抽取如下(在pages包下新建类编写如下代码):
package appium.pages;
import appium.common.Helper;
import org.openqa.selenium.WebElement;
public class PageFavoritesList {
private Helper helper;
public PageFavoritesList(Helper helper){
this.helper = helper;
}
//获取指定的收藏资讯标题控件
public WebElement getFavoritesTitleTextView(int index){
return helper.findById("net.oschina.app:id/tv_favorite_title",index);
}
//获取指定收藏列表资讯标题文本值
public String getFavoritesTitle(int index){
return helper.getText(getFavoritesTitleTextView(index));
}
}
添加了上面三个Page类后,记得去PageHelpert添加这三个Page类的获取方法,如下所示:
private PageNews pageNews;
private PageNewsDetail pageNewsDetail;
private PageFavoritesList pageFavoritesList;
public PageNews getPageNews() {
if(pageNews == null){
pageNews = new PageNews(helper);
}
return pageNews;
}
public PageNewsDetail getPageNewsDetail() {
if(pageNewsDetail == null){
pageNewsDetail = new PageNewsDetail(helper);
}
return pageNewsDetail;
}
public PageFavoritesList getPageFavoritesList() {
if(pageFavoritesList == null){
pageFavoritesList = new PageFavoritesList(helper);
}
return pageFavoritesList;
}
这时候可以新建一个类如AddToFavorites,让这个类继承BasicTestCase,然后通过pagerHelper封装实现用例如下:
package appium.testcases.favorites;
import appium.common.BasicTestCase;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
public class AddToFavorites extends BasicTestCase {
@Test
public void testAddToFavorites() throws Exception {
//跳转到我的设置页面
pageHelper.getPageCommon().goToMySettingsTab();
//登录
pageHelper.getPageMySettings().clickLoginIcon();
pageHelper.getPageLogin().login("735723619@qq.com","12345678");
//回到首页
pageHelper.getPageCommon().goToHomeTab();
//获取第二行资讯标题,因为顶部的标题栏id和资讯标题的id一样,所以资讯类别栏第一个相当于第二个
// index是从0开始,定位方式封装的方法里会自减1
String title = pageHelper.getPageNews().getNewsTitle(2);
//点击第一个资讯标题,进入资讯详情页面
pageHelper.getPageNews().clickNewsItem(2);
//点击收藏的按钮
pageHelper.getPageNewsDetail().clickAddToFavorites();
Thread.sleep(1000);
//通过硬件返回
pageHelper.getPageCommon().goBack();
//跳转到我的设置页面
pageHelper.getPageCommon().goToMySettingsTab();
//点击进入收藏的列表页面
pageHelper.getPageMySettings().clickFavoritesLayout();
//打印出收藏的资讯标题,
System.out.println(title);
//要导入testng的包
assertEquals(title,pageHelper.getPageFavoritesList().getFavoritesTitle(1));
}
}