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:\Users\lizhenhua>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
报错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服务就可以了