如果您已经看过了前三篇文章,恭喜您已经初步了解了JavaAppium。本文会利用前三篇文章的知识点实现抖单自动搜索加关注跟着我们一起来作用例设计吧。
需求分析
要实现自动添加好友功能,需要经过3个界面 A首页,B搜索页 C搜索结果页,我们分别命名为:DyHomePage,DySearchPage,DySearchResultPage。本用例中需要查找的元素为DyHomePage中的搜索按钮,DySearchPage中的输入框和提示列表,DySearchResultPage中的关注按钮
需求方案设计
搜索关键字存储在数据中心 https://test.igood.wang 编写三个界面,及三个控制器。
代码编写
1:声明数据模板并注册到数据中心
声明模板
package wang.igood.example.data;
import wang.igood.test.base.data.APIData;
import java.io.Serializable;
@APIData(name = "抖音好友信息",code = "DyFriendInfo",description = "用于存储搜索用户时的信息")
public class DyFriendInfo implements Serializable {
@APIData(title = "用户昵称")
private String nickName;
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
注册模板
package wang.igood.example;
import wang.igood.example.data.DyFriendInfo;
import wang.igood.test.base.Bootstrap;
import wang.igood.test.base.data.APIData;
import wang.igood.test.base.data.APIDataCenter;
public class Appliation extends Bootstrap {
@Override
public void init() {
initConfig(ClassLoader.getSystemResourceAsStream("app.properties"));
}
@Override
public void register() {
APIDataCenter.getShareInstance().register(DyFriendInfo.class);
APIDataCenter.getShareInstance().upload();
}
}
写一个空的用例,Run就会注册到数据中心
package wang.igood.test;
import org.testng.annotations.Test;
import wang.igood.example.Appliation;
import wang.igood.test.base.Bootstrap;
import wang.igood.test.base.test.BaseTest;
public class DyTest extends BaseTest {
@Test
public void addFriend(){
}
@Override
public String appType() {
return "android";
}
@Override
public Bootstrap bootstrap() {
return new Appliation();
}
}
2:准备测试数据并导入数据中心
3:根据分析写界面
DyHomePage 抖音首页
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import wang.igood.test.base.core.AndroidElement;
import wang.igood.test.base.core.SwipePage;
import wang.igood.test.base.page.BasePage;
//当前界面只有一页
@SwipePage(pages = 0)
public class DyHomePage extends BasePage {
//搜索元素
//在10秒中之内查找searchBtn元素,直到成功。超时后寻找下一个元素
@AndroidElement(uiResourceId = "com.ss.android.ugc.aweme:id/bfq",time = 10)
public MobileElement searchBtn;
public DyHomePage(AppiumDriver driver) {
super(driver);
}
//必须要存在一个无参构造函数
public DyHomePage() {
}
}
DySearchPage 抖音搜索页
@SwipePage(pages = 0)
public class DySearchPage extends BasePage {
//搜索元素
//在10秒中之内查找searchBtn元素,直到成功。超时后寻找下一个元素
@AndroidElement(uiResourceId = "com.ss.android.ugc.aweme:id/ai4",time = 10)
public MobileElement keyEdt;
public DySearchPage(AppiumDriver driver) {
super(driver);
}
//必须要存在一个无参构造函数
public DySearchPage() {
}
public List<WebElement> getAddKeys(String key){
String uiSelector = getUISelector(key,null);
List<WebElement> elements = waitAutoElements(uiSelector,10);
return elements;
}
}
DySearchPage 抖音搜索结果页
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import org.openqa.selenium.WebElement;
import wang.igood.test.base.core.AndroidElement;
import wang.igood.test.base.core.SwipePage;
import wang.igood.test.base.page.BasePage;
import java.util.List;
//当前界面只有一页
@SwipePage(pages = 0)
public class DySearchResultPage extends BasePage {
@AndroidElement(uiText = "用户")
public MobileElement userTab;
public List<WebElement> getAddBtns(){
String uiSelector = getUISelector("关注",null);
List<WebElement> elements = waitAutoElements(uiSelector,30);
return elements;
}
public DySearchResultPage(AppiumDriver driver) {
super(driver);
}
//必须要存在一个无参构造函数
public DySearchResultPage() {
}
}
4:根据界面写控制器
import io.appium.java_client.AppiumDriver;
import wang.igood.example.page.DyHomePage;
import wang.igood.test.base.controller.BaseController;
public class DyHomeController extends BaseController<DyHomePage> {
public DyHomeController(AppiumDriver driver) {
super(driver);
}
}
public class DySearchController extends BaseController<DySearchPage> {
public DySearchController(AppiumDriver driver) {
super(driver);
}
}
public class DySearchResultController extends BaseController<DySearchResultPage> {
public DySearchResultController(AppiumDriver driver) {
super(driver);
}
}
5:编写测试用例
@Test
public void addFriend(){
DyHomeController homeController = new DyHomeController(driver);
homeController.safeClick(homeController.getPage().searchBtn);
DyFriendInfo friendInfo = (DyFriendInfo) APIDataCenter.getShareInstance().getData(DyFriendInfo.class);
DySearchController searchController = new DySearchController(driver);
searchController.getPage().keyEdt.setValue(friendInfo.getNickName());
List<WebElement> elsments = searchController.getPage().getAddKeys(friendInfo.getNickName());
for(int i = 1,size = elsments.size();i<size;i++){
MobileElement element = (MobileElement) elsments.get(i);
element.click();
break;
}
DySearchResultController resultController = new DySearchResultController(driver);
resultController.getPage().userTab.click();
List<WebElement> elsments2 = resultController.getPage().getAddBtns();
if(elsments2 != null && elsments2.size() > 0){
for(WebElement element : elsments2){
resultController.safeClick((MobileElement) element);
}
}
}
到现在项目就写完了,您Run一下,项目源代码下载:https://igood.oss-cn-beijing.aliyuncs.com/DYAddFriendExample.zip