Java的Appium自动化测试教程
环境配置需求:
1、jdk 这里使用的是jdk1.8
2、Android SDK
3、Appium 使用的是 Appium-desktop 这是款桌面集成的Appium 操作方便简单
4、开发工具 Eclipse
5、nodejs: https://nodejs.org/en/
6、夜神安卓模拟器
7、测试教程使用的微信 apk下载地址:http://gdown.baidu.com/data/wisegame/66fa6a9b0c42e77d/3f7e66fa6a9b0c42e77dda78f05e9812.apk
8、代码示例测试驾考宝典下载地址:https://www.wandoujia.com/apps/280597
点击普通下载,下载apk
9、这里网盘也提供一下一些安装包
链接:https://pan.baidu.com/s/1gDEOuKBiLRjLhu_XhBheMA
提取码:8q8w
如果链接失效请下面评论,会更新链接
环境变量配置自行百度这里就不在说了
安装完成后运行安装appium-doctor命令检测appium环境
npm install -g appium-doctor
bundletool.jar下载地址:https://github.com/google/bundletool/releases
在android sdk安装目录下面创建bundle-tool目录把bundletool.jar放入 文件名字必须改为bundletool
在系统环境变量和用户环境变量分别添加上目录
FFmpeg下载地址:https://github.com/FFmpeg/FFmpeg
gstreamer下载地址:https://gstreamer.freedesktop.org/download/
opencv4nodejs和mjpeg-consumer使用npm安装
npm install -g opencv4nodejs
npm install -g mjpeg-consumer
再次运行appium-doctor检测环境全部打钩就没问题了
以上环境安装完成后在你的\Android\Sdk\platform-tools目录下找到adb.exe
在夜神安卓模拟器目录Nox\bin下找到nox_adb.exe
把\Android\Sdk\platform-tools目录下找到的adb.exe改名为nox_adb.exe并且复制到Nox\bin下
打开模拟器设置为手机版
探测包名使用cmd进入\Android\Sdk\build-tools\29.0.2>目录下 我这里是29.0.2版本可能会不一样
输入aapt dump badging D:\baidu\wechat.apk 注意apk的地址不能有中文否则会报错
执行后获取包名为com.tencent.mm
找到应用启动入口的Activity
打开Appium 输入本地地址127.0.0.1 默认端口4723 把截图里面的内容勾选
点击Start Server启动Appium
点击放大镜进入配置页面
cmd 输入 adb cconnect 127.0.0.1:62001 夜神安卓模拟器运行端口为62001
在Appium里面配置选项填写配置
deviceName 为模拟器连接URL
platform 为测试的应用平台
appPackage为应用包名
appActivity为应用启动入口
{"deviceName": "127.0.0.1:62001","platform": "Android","appPackage": "com.tencent.mm","appActivity": "com.tencent.mm.ui.LauncherUI"
}
点击 save保存配置方便下次使用不需要重新填写
Saved Capability Sets 可以看到刚才保存的配置
点击进入刚才的配置页
点击Start Session启动
错误原因为模拟器没有安装微信
直接鼠标拖拽apk到模拟器进行安装
每次开启模拟器必须要开启USB调试
设置>关于>连续点击版本号5次开启开发者模式
在设置里面找到开发者选项
找到USB调试打开
完成后点击Start Session
使用appium上面的Select Elements去选取按钮,获取按钮节点id
示例代码:
maven依赖包
<dependency><groupId>io.appium</groupId><artifactId>java-client</artifactId><version>7.3.0</version>
</dependency>
package com.centent.appium;import java.net.MalformedURLException;
import java.net.URL;import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.touch.offset.PointOption;/**
* @author ௸྄ིོུ倾心คิดถ
* @version 创建时间:2021年7月11日 下午5:49:04
* @ClassName 类名称
* @Description 类描述
*/
public class AppiumTest {public static AndroidDriver<WebElement> androidDriver;public static void main(String[] args) throws MalformedURLException {// 创建配置对象DesiredCapabilities desiredCapabilities = new DesiredCapabilities();// 添加配置// deviceName 可以找到我们测试的设备desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");// platformName: 测试平台 Android or IosdesiredCapabilities.setCapability("platformName", "Android");desiredCapabilities.setCapability("appPackage", "com.handsgo.jiakao.android");// appActivity 测试App启动入口desiredCapabilities.setCapability("appActivity", "com.handsgo.jiakao.android.splash.Login");desiredCapabilities.setCapability("unicodeKeyboard", true);//使用 Unicode 输入法 desiredCapabilities.setCapability("resetKeyboard", true); //重置输入法到原有状态 如果不加输入不了中文// 传入两个参数//第一个参数: Appium通讯地址//第二个参数:配置对象androidDriver=new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"),desiredCapabilities);try {testJiaKao();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static void testJiaKao() throws InterruptedException {Thread.sleep(3000);TouchAction ta = new TouchAction(androidDriver);//触屏点击事件 输入ta.press(PointOption.point(605,1078)).release().perform();// 等待元素加载完毕Thread.sleep(20000);// 找到定位城市文本,并且点击androidDriver.findElementById("com.handsgo.jiakao.android:id/cityTv").click();//强制等待Thread.sleep(3000);//找到城市搜索框,并且输入福州androidDriver.findElementById("com.handsgo.jiakao.android:id/edt_search_q").sendKeys("福州");Thread.sleep(3000);//找到搜索结果中的福州,并且点击androidDriver.findElementById("com.handsgo.jiakao.android:id/item_title").click();//找到小车并且点击androidDriver.findElementById("com.handsgo.jiakao.android:id/itemCar").click();//找到下一步并且点击androidDriver.findElementById("com.handsgo.jiakao.android:id/okBtn").click();}}
探测页面元素id建议使用sdk的uiautomatorviewer.bat在目录Android\Sdk\tools\bin下面
启动之后在cmd 使用连接命令
adb connect 127.0.0.1:62001
红色框的按钮是刷新模拟器页面 当然你也可以选择使用Appium的元素探测按钮,但是没SDK自带的方便
如果uiautomatorviewer.bat点击使用不了
请到我的网盘下载jar包 放入Android\Sdk\tools\lib目录下直接覆盖
链接:https://pan.baidu.com/s/1PflWyiBNXpQ6XxZBuAeZDw
提取码:ynyl
持续更新中。。。。
Java的Appium自动化测试教程相关推荐
- appium的python教程_移动App Appium自动化测试教程Appium+Python 【2018年新】_IT教程网...
资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 1-3 移 ...
- pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】
资源介绍 资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 ...
- appium python自动测试 百度网盘_S35 移动App Appium自动化测试教程Appium+Python 百度云...
Python视频教程名称:移动App Appium自动化测试教程Appium+Python Python视频教程 [IT视频教程网] it教程 ( l w1 F: L" `, v 2 c ...
- 跪了!!BATJ各位大佬联合教你Java进行Appium自动化测试的实现
本文介绍如何在eclipse中使用Java进行Appium自动化测试 前提条件 1.配置好了java环境 2.安装了eclipse 3.安装了Maven 4.安装了Android模拟器.我用的夜神模拟 ...
- 使用WebDriver + Java + Junit做自动化测试教程
web的自动化测试是比较有挑战性的工作,难度不亚于产品功能开发.web自动测试需要借助一些工具来完成.这其中涉及的工具有Webdriver\Java\Eclipse\Junit\Maven等. 详细的 ...
- 【selenium3+JAVA】界面自动化测试教程(一)——浏览器启动之firefox浏览器的启动
前言 由于使用selenium3,故启动firefox浏览器时已经不能像以前那样不需要driver就可以启动了,需要添加driver,driver名称为geckodriver.exe,下载地址:htt ...
- 【selenium3+JAVA】界面自动化测试教程(一)——浏览器的启动之IE浏览器的启动
前言 同chrome.firefox,ie浏览器的启动一样需要driver,但是IEDriver不像chromeDriver一样有多个版本,不同版本对应不同的chrome版本,它只有32位版本和64位 ...
- 全网最全appium工作原理以及appium自动化测试环境搭建教程
目录:导读 一.前言 二.Appium简介 三.搭建Appium+Python自动化测试环境 1.安装JDK并配置JDK的环境变量. 2.安装SDK并配置SDK的环境变量. 3.安装夜神模拟器并在模拟 ...
- Appium 自动化测试
前言: [文章末尾给大家留下了大量的福利] 1.Appium介绍 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以 ...
- 虫师python appium自动化测试书_Appium移动自动化测试(一)--安装Appium
这套教程年久失修,问题的人也比较多,于是,我重新整理了一套appium入门教程. ---------2017.11.16 更新----------------------- Appium 自动化测试是 ...
最新文章
- Eigen入门之密集矩阵 8 - resharp slicing切片
- linux 硬盘繁忙,icinga2 借助check_iostat.sh抓取linux服务器的diskIO(硬盘繁忙度)
- Bzoj1899: [Zjoi2004]Lunch 午餐
- VSAN效能监控利器-VSAN Observer
- java tomcat 读取配置文件端口_跟我学Java编程—应用读写项目配置文件的Properties类...
- java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String
- 数学归纳法证明时间复杂度
- 两种消息模型: 点对点(queue)发布/订阅(topic)
- 软件poc测试方案,华为fusioncloud桌面云解决方案5.3poc测试方案v1.0
- Dynamic Web TWAIN:网页扫描过程中如何自动检测和删除空白页?
- 为Linux安装虚拟PDF打印机
- 基于无人售货机商品售卖情况推荐商品
- 3小时Python基础速成(1)
- S32K144_新建KEIL工程
- c语言中的三角函数公式,高中三角函数公式大全-必背基础知识点.doc
- 远程计算机网络会议有哪些优缺点,远程会议
- python 抛出异常记录
- 视频去重(hashlib.md5)
- csgo为什么显示vac无法连接服务器,《csgo》vac无法验证游戏会话怎么解决 vac无法验证游戏会话解决方法介绍...
- 云端软件平台(免去重装系统后装软件的烦恼)
热门文章
- PPT镂空字体、填充文字、图片字、拆分字制作
- 我写的万年历插件(含天干地支,农历,阳历,节气,各种节假日等),基于MooTools 1.4
- SQL Server2000安装教程
- 怎么在win7上安装AIR780E的USB驱动
- python utf编码 查询_python数据库查询中文乱码
- 前端页面读取ukey
- Jenkins定时构建与轮询SCM
- 华为数通NA-NP学习笔记(个人精简)
- ROS1 noetic + depthai_ros教程
- 特洛伊木马与计算机病毒有什么区别,特洛伊木马Vs病毒Vs蠕虫, 有什么区别?...