查看设备 ID
adb devices
查看设备的 Android 系统版本
adb shell getprop ro.build.version.r-elease
查看想要启动 app 的包名
adb shell pm list packages
查看想要启动 app 的启动页面
adb shell monkey -p ${package.name} -vvv 1
获取app的启动页面
adb logcat |grep -i displayed
adb logcat ActivityManager:I | grep “cmp”
adb logcat ActivityManager:I |grep -i displayed
启动页面
adb shell am start -n <包名>/<avticity名>
adb shell am start -n com.xueqiu.android/.view.WelcomeActivityAlias
andorid机投屏
scrcpy
capability 配置参数解析
DesiredCapabilities caps = new DesiredCapabilities();
- 公共参数部分
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
caps.setCapability(MobileCapabilityType.UDID, "adb-2edf7a82-WE6ucp._adb-tls-connect._tcp.");
caps.setCapability(MobileCapabilityType.DEVICE_NAME, "XiaoMi Civi 2");
caps.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, 13);
//在假设客户端退出并结束会话之前,Appium 将等待来自客户端的新命令多长时间(以秒为单位)
// 超时后会话删除
caps.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, 3600);
// 添加参数 noReset 默认为false, 设置为true时 保存历史状态数据
// Android 不停止应用程序,不清楚应用程序数据,不卸载apk
// 添加参数 fullReset 默认为false, 设置为true时: 新会话之前完全卸载被测应用程序 ,特别的: Android 在会话开始之前( appium 启动app )和测试之后停止应用程序,清楚应用程序数据并卸载apk
// 添加参数 dontStopAppOnReset 默认为false 设置为true时: 不希望应用程序在运行时重新启动
caps.setCapability(MobileCapabilityType.NO_RESET, true);
// 启动允许权限,若 noReset=true时,此选项不生效
caps.setCapability(SupportsAutoGrantPermissionsOption.AUTO_GRANT_PERMISSIONS_OPTION, true);
// 参数 printPageSourceOnFindFailure 默认为false ,设置为true时: 发生任何错误,强制服务器将实际的 XML 页面源转储到日志中.
caps.setCapability(PRINT_PAGE_SOURCE_ON_FIND_FAILURE, true);
- android部分
// 打开app的时候的页面是哪个
caps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.appiumpro.the_app");
caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, ".MainActivity");
// 授予启动的应用某些权限,若NO_RESET=true 此选项不生效
caps.setCapability(AndroidMobileCapabilityType.AUTO_GRANT_PERMISSIONS, true);
// 首次启动的时候,不停止app
caps.setCapability(AndroidMobileCapabilityType.DONT_STOP_APP_ON_RESET,true);
// 跳过安装,权限设置等操作
caps.setCapability(AndroidMobileCapabilityType.SKIP_DEVICE_INITIALIZATION,true);
//输入中文,UiAutomator1 需要配置才能输入中文,UiAutomator2不再需要配置
caps.setCapability(AndroidMobileCapabilityType.UNICODE_KEYBOARD,true);
// WebView 配置ensureWebviewsHavePages
//是否跳过在 getContexts 输出中显示没有页面的 Web 视图。
// 驱动程序使用 devtools 连接来检索有关现有页面的信息。
// 自 Appium 1.19.0 起默认为 true,如果低于 1.19.0,则为 false。
caps.setCapability(AndroidMobileCapabilityType.ENSURE_WEBVIEWS_HAVE_PAGES, true);
//nativeWebScreenshot: 是否使用UiAutomator框架提供的截图端点(true)
//而不是chromedriver提供的端点(false,默认值)。当您遇到后者问题时使用它。
caps.setCapability(AndroidMobileCapabilityType.NATIVE_WEB_SCREENSHOT, true);
ios部分
// 被测应用的 bundle ID 。用于在真实设备中启动测试,也用于使用其他需要 bundle ID 的关键字启动测试。
// 在使用 bundle ID 在真实设备上执行测试时,你可以不提供 app 关键字,但你必须提供 udid 。
caps.setCapability(IOSMobileCapabilityType.BUNDLE_ID,"");
// 连接的真实设备的唯一设备编号
caps.setCapability(MobileCapabilityType.UDID,"");
启动
- 方式一
driver = new AndroidDriver(remoteUrl, caps);
- 方式二(热启动)
//打开app退出时的页面
driver.execute(LAUNCH_APP);
退出app
driver.quit();
常见控件交互方法
// 获取当前元素文本text
String text = element.getText();
System.out.println("文本内容: "+text);
// 当前元素是否可见,返回布尔类型
boolean displayed=element.isDisplayed();
System.out.println("元素是否可见: "+displayed);
// 查看当前元素是否可用,返回布尔类型
boolean enabled = element.isEnabled();
System.out.println("元素是否可用: "+enabled);
// 当前元素是否被选中,返回布尔类型
boolean selected = element.isSelected();
System.out.println("元素是否被选中: "+selected);
// 获取当前元素属性值
String attribute = element.getAttribute("resource-id");
System.out.println("元素属性 resource-id = "+attribute);
// 获取元素坐标
Point location=element.getLocation();
System.out.println("元素坐标(X,Y) = "+location);
// 获取元素尺寸(宽,高)
Dimension size=element.getSize();
System.out.println("元素尺寸(宽,高) = "+size);
// 计算获取元素中心点
/* 中心点X = startX+宽度/2
中心点Y = startY+高度/2
*/
int middleX = location.getX()+size.getWidth()/2;
int middleY = location.getY()+size.getHeight()/2;
System.out.println("中心点X = "+middleX);
System.out.println("中心点Y = "+middleY);
元素定位工具
- appium inspector
- Weditor
- 要求:python 3.6+ 以上
- 安装:weditor 是 python 的第三方库
- pip install weditor 进行安装
- 运行:安装完成之后,在命令行运行
python -m weditor
即可
标签:App,笔记,caps,adb,setCapability,println,out,true,软件测试 From: https://blog.51cto.com/u_16547786/9585951霍格沃兹的测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供 1v1 私教指导,BAT 级别的测试管理大咖量身打造职业规划。