1、adb介绍
- adb(Android Debug Bridge)是android sdk的一个工具
- adb是用来连接安卓手机和PC端的桥梁,要有adb作为二者之间的维系,才能让用户在电脑上对手机进行全面的操作。
- Android的初衷是用adb这样的一个工具来协助开发人员在开发android应用的过程中更快更好的调试apk,因此adb具有安装卸载apk、拷贝推送文件、查看设备硬件信息、查看应用程序占用资源、在设备执行shell命令等功能。
2、adb常用命令
- 检测连接到电脑的安卓设备(模拟器/真机)-$adb devices
- 从手机中拉取信息放到本地电脑上-$adb pull <手机路径> <本机路径>
- 从本地推送信息到手机上去-$adb push <本机路径> <手机路径>
- 登录设备shell模式(命令行的人机界面)- $adb shell
- 安装应用-$adb install xxx.apk
- 卸载应用-$adb uninstall com.tencent.mobileqq
- 启动App-$adb shell am start -W 包名/启动入口
- 打印日志,Android系统的日志 其中包括了App应用日志
$adb logcat
$adb logcat > 本地PC端文件路径
3、App的类型
4、ActivityName 类名& PackageName包名
packageName(包名)-应用的唯一身份标示,系统通过包名识别不同的应用,如两个相同包名的应用在安装时会提示覆盖
activityName(类名)-Activity:android四大组件之一,简单来说就是一个界面,和用户进行交互
adb shell dumpsys activity | find "mFocusedActivity"
- 启动入口appActivity 和 Activity有什么区别??
appActivity在App中是唯一,它的作用是用来启动App的
- 获取App入口Activity
aapt dump badging <应用路径> | find “launchable-activity”
5、App页面控件
6、第一个代码
pom.xml 导入库,注意不要导入selenium,会和java-client冲突
<dependencies> <!-- https://mvnrepository.com/artifact/org.testng/testng --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.0.0</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/io.appium/java-client --> <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>7.0.0</version> </dependency> </dependencies>
import io.appium.java_client.MobileBy; import io.appium.java_client.android.AndroidDriver; // import org.openqa.selenium.By; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import java.net.MalformedURLException; import java.net.URL; public class AppAutoTest { public AndroidDriver androidDriver; @BeforeTest public void setUpTest() throws MalformedURLException, InterruptedException { //前置动作-打开测试App,并且进入到登录 //创建所需功能的对象 DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); //deviceName -- 找到测试的设备 desiredCapabilities.setCapability("deviceName","127.0.0.1:62001"); //platformName -- 指定测试的平台是为Android or IOS desiredCapabilities.setCapability("platformName","Android"); //appPackage -- 测试App的包名 desiredCapabilities.setCapability("appPackage","com.lemon.lemonban"); //appActivity --测试App的启动入口 desiredCapabilities.setCapability("appActivity","com.lemon.lemonban.activity.WelcomeActivity"); //把配置发送给Appium服务器,Appium服务器根据这些配置找到测试的设备、启动测试App //Appium服务器的地址127.0.0.1:4723 URL url= new URL("http://127.0.0.1:4723/wd/hub"); //创建驱动对象 androidDriver = new AndroidDriver(url,desiredCapabilities); Thread.sleep(5000); //进入到登录页面 //1、点击题库 androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/navigation_tiku")).click(); //2、点击去登陆 androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/button_go_login")).click(); } @Test public void testLogin() throws InterruptedException { Thread.sleep(2000); androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/et_mobile")).sendKeys("13323234545"); androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/et_password")).sendKeys("123456"); androidDriver.findElement(MobileBy.id("com.lemon.lemonban:id/btn_login")).click(); } @AfterTest public void tearDownTest(){ //后置 androidDriver.quit(); } }
报错1:
C:Userslizhenhua>adb connect 127.0.0.1:62001
adb server version (36) doesn't match this client (40); killing...
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon
https://www.cnblogs.com/yoyoketang/p/9024620.html
报错2:
org.openqa.selenium.WebDriverException: Connection refused: connect
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DESKTOP-AICTF6C', ip: '192.168.136.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_144'
Driver info: driver.version: AndroidDriver
打开appium服务就可以了