- Appium组件介绍:
- 优点:
- 跨平台
- 支持原生
- 混合以及web移动的应用跨平台:Android & IOS
- 跨语言:
- java、python、Ruby
- 支持多语言
- Appium下载:
- 1、打开官网
- 2、有两种下载方式:直接点击Download Appium
- 3、点击Get started 可以查看appium的相关介绍
- 安装:
- 1、找到下载的安装文件双击即可安装
- 2、直接点击安装即可(我已经安装了所以会显示已经存在)
- 3、安装成功后桌面会有个
- 4、点击运行即可
- APP自动化环境部署
- 1、jdk的安装
- 配置环境变量:我的计算机右击属性
- classpath的配置和上图一样
- 2、IDE-eclipse安装
- 3、模拟器安装
- 4、Android SDK安装/配置
- 1、 Android SDK(Software Development Kit,软件开发工具包)被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。它提供了 Android API 库和开发工具构建,测试和调试应用程序。简单来讲,Android SDK 可以看做用于开发和运行 Android 应用的一个软件。
- 2、下载SDK
- 1.目前官网上已经没有单独的SDK下载安装包了。目前官网推荐的是下载包含有Android SDK的Android Studio。
- Android Studio 的一个功能非常强大的用来做安卓开发试调的官方出品的工具。
- 2.由于这个Android Studio 的安装包过大且官网下载需要翻墙,而咱们在用Appium 的时候实际上只需要用到SDK 工具而已。所以推荐大家去另外一个国内的Android 工具的下载网站下载。传送门
- 进入页面后点击【Android SDK 工具】按钮,然后在弹出的选择框内点击【SDK Tools】按钮,然后界面会自动跳转到SDK 的下载界面,选择适合自己的版本进行下载
- 下载后的解压到任意盘符
- 解压后的目录如下:
- 配置SDK环境变量:两种方式我是直接配置的,一种是定义变量接收
- 夜神模拟器自带了一个adb所以需要替换
- adb:步骤也很简单
- 1、找到安装的SDK文件,复制adb.exe
- 2、打开夜神模拟器
- 把adb.exe重命名nox_adb.exe后粘贴到夜神模拟器的安装路径下,覆盖下列文件即可
- appium页面的基本介绍:
- simple配置:基本配置
- advanced配置:高级配置
- presets :就配置
- appium运行操作页面:
- 点击放大镜要保证模拟器或APP是开启或连接状态
- 在cmd命令中使用adb命令查看连接设备的地址,如果是用模拟器的需要使用connect进行连接
- 获取包名有两种方式:第一种就是通过SDK自带的解析包名命令,直接 cmd
- aapt dump badging 安装包.apk 进行解析
- 第二种:使用adb命令 adb shell dumpsys window | findstr mCurrentFocus
- 首先得保证程序是启动的:
- 这个也可以查看包名
- 类名:
- 程序的入口
- 报这样的错就看一下模拟器中有没有测试的软件包
- 执行成功的展示页
- UIAutomatorViewer:SDK原生元素定位工具,不需要提供启动参数,效率高
- 首先进入到SDK目录,然后bin目录找到uiautomatorviewer.bat 双击运行
- uiautomatorviewer界面介绍:
- 包名 & 类名的介绍:
- PackageName(包名):
- ActivityName(类名)
- Native APP:
- 原生态APPHybrid
- APP:混合APP
- web APP:不需要安装,有浏览器即可(H5)
- adb help 查看基本命令
- 查看链接设备
- 下载文件 adb pull
- 上传 adb push
- 远程界面 adb shell
- 没安装之前:
- 使用adb命令进行安装
- Windows
- 卸载:首先的查询到包名,保证程序是运行状态 adb shell dumpsys activity | find "mFocusedActivity" 或 adb shell dumpsys window | findstr mCurrentFocus
- 卸载命令 adb uninstall com.moretv.android
- 启动和终止服务
- 启动程序:微信
- 清缓存
- 获取指针位置
- 启动浏览器
- 启动浏览器命令 adb shell input tap 499 465
- 打印日志
- 配置maven环境变量
- 查看maven版本
- 修改仓库路径 D:\maven\repository\settings.xml
- 镜像仓库 D:\maven\repository\settings.xml
- 中央仓库 https://mvnrepository.com/下载 Java-client包
- 项目结构
- 填写在pom.xml文件中Java-client版本 6.1.0 可以使用高版本的,我的是7.20
- 搜索报名和
- 使用命令查包名:aapt dump badging 安装包路径.apk |findstr package
- 使用命令查程序入口 aapt dump badging 安装包路径.apk |findstr launchable-activity
- 手机的链接设备名
AppuimTest.java文件内容
package com.test.firsAppium;//包名
import java.net.MalformedURLException;import java.net.URL;//第三方依赖包
import org.openqa.selenium.WebElement;//导入 selenium 包中的WebElement模块
import org.openqa.selenium.remote.DesiredCapabilities;//导入 selenium 包中的remote.DesiredCapabilities模块
import io.appium.java_client.android.AndroidDriver;//导入appium 的依赖包 java_client
public class AppuimTest { //定义变量属性
androidDriver public static AndroidDriver<WebElement> androidDriver;
public static void main(String[] args) throws MalformedURLException, InterruptedException {
//1、创建配置对象
DesiredCapabilities desiredCapabilities=new DesiredCapabilities();
//添加配置 //deviceName:可以找到我们测试的设备本地的127.0.0.1:62001,b672fcc5手机链接设备名称,端口好5555 desiredCapabilities.setCapability("deviceName", "b672fcc5:5555"); //platformName:测试平台
Android or IOS desiredCapabilities.setCapability("platformName", "Android"); //获取包名,找到要测试的
App appPackage desiredCapabilities.setCapability("appPackage", "com.handsgo.jiakao.android"); //automationName: uiautomator2来解决输入框输不了数据的 //自动化引擎 desiredCapabilities.setCapability("automationName", "uiautomator2"); //appActivity:测试app启动入口 desiredCapabilities.setCapability("appActivity", "com.handsgo.jiakao.android.splash.Login"); //3、创建驱动 //传入两个参数 //第一个参数:appium通信地址 //第二个参数配置对象
androidDriver=new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"),desiredCapabilities); //调用自定义方法 testJiakao();
}
public static void testJiakao() throws InterruptedException{
//设置等待时间 Thread.sleep(10000); //点击启动程序会弹出遮罩层让我们选择,点击我知道
androidDriver.findElementById("com.handsgo.jiakao.android:id/permission_btn").click();
//1、找到定位城市文本,并且点击,(使用SDK自带的定位元素作为辅助功能定位元素的识别方式)
androidDriver.findElementById("com.handsgo.jiakao.android:id/select_text").click(); //2、找到城市搜索框,并输入 "长沙"
androidDriver.findElementById("com.handsgo.jiakao.android:id/edt_search_q").sendKeys("长沙"); //3、找到搜索结果中的"长沙",并且点击
androidDriver.findElementById("com.handsgo.jiakao.android:id/item_title").click(); //4、点击长沙后回到首页,点击小车 Thread.sleep(1000);
androidDriver.findElementById("com.handsgo.jiakao.android:id/item_car").click(); //5、找到"下一步"并且点击
androidDriver.findElementById("com.handsgo.jiakao.android:id/ok_button").click(); //跳转页面可能需要等待,所以设置等待时间 Thread.sleep(2000); //6、点击男士
androidDriver.findElementById("com.handsgo.jiakao.android:id/gender_male_btn").click(); //7、点击未报名驾校
androidDriver.findElementById("com.handsgo.jiakao.android:id/jiakao_not_sign_up_btn").click(); //8、点击纯为拿本
androidDriver.findElementById("com.handsgo.jiakao.android:id/naben_btn").click(); //9、点击下一步
androidDriver.findElementById("com.handsgo.jiakao.android:id/btn_next").click(); } }
- 执行代码前先保证appium正常运行,模拟器或手机正常链接,有时候用模拟器比较慢所以我换成手机
- 驾考宝典的一些自动化脚本
- 设置断言需要依赖testng