首先要分析软件步骤
从大的方面来说
第一步要登录成功,第二步主流程选择购买一个课程(我太穷了,所以支付的时候选择取消订单代表购买成功了)
一登录
1.1启动软件
采坑点:有的时候你安装一个新版appium会发现,双击之后没有启动,我的解决办法是从1.17版本换成1.15版本安装
和之前 说的启动方式相同,固定写法
//1.添加配置,创建DesiredCapabilities对象
DesiredCapabilities desiredCapabilities = newDesiredCapabilities();//指定测试设备的名称
desiredCapabilities.setCapability("deviceName", "JQYNW18C12004061");
desiredCapabilities.setCapability("platformName", "Android"); //添加操作系统配置
desiredCapabilities.setCapability("platformVersion", "9"); //添加操作系统版本设置
desiredCapabilities.setCapability("appPackage", "com.xueersi.parentsmeeting"); //指定想要测试应用的包名
desiredCapabilities.setCapability("appActivity", "com.xueersi.parentsmeeting.module.home.LaunchActivity"); //指定想要测试应用的入口activity
desiredCapabilities.setCapability("sessionOverride", true);//每次启动时覆盖session,否则第二次后运行会报错不能新建session
desiredCapabilities.setCapability("unicodeKeyboard", true); //设置键盘
desiredCapabilities.setCapability("resetKeyboard", true); //设置默认键盘为appium的键盘
AndroidDriver androidDriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),desiredCapabilities);
Thread.sleep(5000);
启动软件
1.2点击登录按钮
1.3.点击其他号码登录
1.4点击密码登录
1.2.13.14都是相同的操作执行3遍
androidDriver.findElementById("com.xueersi.parentsmeeting:id/rl_splash_privacy_verify").click();
Thread.sleep(2000);
androidDriver.findElementById("com.xueersi.parentsmeeting:id/tv_splash_login").click();
Thread.sleep(2000);
androidDriver.findElementById("com.xueersi.parentsmeeting:id/tv_bt_other_way").click();
Thread.sleep(2000);
androidDriver.findElementById("com.xueersi.parentsmeeting:id/fast_login_to_password_login").click();
Thread.sleep(2000);
View Code
1.5、1.6输入账号密码、点击登录
好,上次的软件就是这里出的问题,无法输入内容。
这回APP就好使了
androidDriver.findElementById("com.xueersi.parentsmeeting:id/et_login_name").sendKeys("XXXXX");
androidDriver.findElementById("com.xueersi.parentsmeeting:id/et_login_type_pwd_number").sendKeys("XXXXX");
androidDriver.findElementById("com.xueersi.parentsmeeting:id/tv_login_btn").click();
View Code
吐槽一下。我想修改代码竟然在编辑页面中开不大折叠的代码框。还需要删除重新创建才好使。这是Bug啊
1.7 你登录成功之后会有一些权限系统设置,需要同意或者关闭
androidDriver.findElementById("com.xueersi.parentsmeeting:id/btn_permission_goto_settings").click();
Thread.sleep(2000);
androidDriver.switchTo().alert().accept();//选择确定关闭系统提示
View Code
第一步就算是完成了,相当于终于登录成功。进入到APP内部页面了。
我这一路走过来走了1个礼拜。我相信你们肯定比我走的要顺利
接下来执行主流程:购买一个课时
我设计的流程是
1.在主页点击搜索栏,进入搜索页面
androidDriver.findElementByXPath("//*[contains(@resource-id,'com.xueersi.parentsmeeting:id/ts_home_search_banner')]/android.widget.TextView").click();
2.在搜索页面,搜索:高中语文,显示查询结果列表
这里出现一个坑,我发现我输入内容之后无法点击确认进行筛选
通过网上查询发现可以使用模拟键盘
1. androidDriver.pressKeyCode(66); 来进行操作,---------------失败
2.说原因是appium自带的Unicode IME被自动设置成默认输入法了
所以
注释掉
// desiredCapabilities.setCapability("unicodeKeyboard", true); //设置键盘
// desiredCapabilities.setCapability("resetKeyboard", true); //设置默认键盘为appium的键盘
然后下载一个搜狗输入法,然后设置搜狗输入法为默认输入法
重新执行---------弹出输入框-----------成功
3.然后点击一个课程,进入课程详情
坑:这里发现所有的课程的id都是com.xueersi.parentsmeeting:id/btn_permission_goto_settings,我想选择第二个
ArrayList eleList = new ArrayList();
eleList = (ArrayList) androidDriver.findElementsById("com.xueersi.parentsmeeting:id/tv_course_card_name");
eleList.get(1).click();
4.点击加入购物车,弹出二次确认框
5.点击确认加入,成功加入购物车
6.点击购物车进入购物车页面
7.点击编辑
8.选择全部
9.点击删除
10.返回到主页
11.退出登录
这些基本上都是点点点,就不写代码了。和上面的大同小异,只是id不同而已
最后结果是执行成功。退出登录。3天之后学而思营销老师给我打电话了。证明跑通了o(╯□╰)o