目录

前言

参考文章

Python自动化(安卓篇)

配置appium

联调夜神模拟器和appium

(1) 启动appium

(2) 配置安卓SDK

(3) 调试模拟器!!!

(4) 需要测试的软件APP,是否没有apk、有apk

(5) 实战代码剖析

(6) 元素定位实战&理论

Python自动化(安卓&win11篇)

Python自动化(IOS篇)


前言

为啥写这篇文章?不告诉你哈。

参考文章

目的 链接
手机APP自动化 Appium原理与安装 | 白月黑羽 (byhy.net)
python+夜神模拟器自动化

CSDN博主「浅醉樱花雨」的原创文章

Python3 + Appium + 安卓模拟器 实现APP自动化测试,并生成测试报告_浅醉樱花雨的专栏-CSDN博客

appium-inspector使用教程 Appium Inspector使用_BUG1314的专栏-CSDN博客_appium inspector
win11安装安卓子系统 微软 Win11 安卓子系统已支持运行IT之家、支付宝等 APK 应用(附手动侧载安装教程攻略) - IT之家 (ithome.com)

Python自动化(安卓篇)

配置appium

(1)白月黑羽的版本,一开始本人使用他提供的sdk。 白月黑羽版的安卓SDK如下图所示,但是他的 uiautomateviewer.bat(安卓查看APP界面元素 的工具会闪退。

所以本人自己安装了

(2) 安装 appium-inspector

参考链接

目的 链接
appium-inspector appium/appium-inspector: A GUI inspector for mobile apps and more, powered by a (separately installed) Appium server (github.com)

appium-inspector已经独立于 appium,所以需要从github下载。

联调夜神模拟器和appium

(1) 启动appium

(2) 配置安卓SDK

参考文章

目的 链接
SDK国内下载地址 AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载
教程 Android SDK的下载与安装 - 菜鸟学飞ing - 博客园 (cnblogs.com)
知乎教程 Android SDK下载安装及配置教程 - 知乎

前言

1.目前官网上已经没有单独的SDK下载安装包了。目前官网推荐的是下载包含有Android SDK的Android Studio。Android Studio 的一个功能非常强大的用来做安卓开发试调的官方出品的工具。Ps:官网下载,需科学上网。官网下载传送门

2.由于这个Android Studio 的安装包过大且官网下载需要FQ,而咱们在用Appium 的时候实际上只需要用到SDK 工具而已。所以推荐大家去另外一个国内的Android 工具的下载网站下载。传送门

SDK Tools

SDK Platform-Tools

这是 adb, fastboot 等工具包。把解压出来的 platform-tools 文件夹放在 android sdk 根目录下,并把 adb所在的目录添加到系统 PATH 路径里,即可在命令行里直接访问了 adb, fastboot 等工具。

Build-Tools
这是Android开发所需的Build-Tools,下载并解压后,将解压出的整个文件夹复制或者移动到 your sdk 路径/build-tools 文件夹即可。

【配置】

SDK Manager.exe。下面4个选项少一不可。

【最终】

(1)本人的

(2)白月黑羽版的安卓SDK如下图所示,但是他的 uiautomateviewer.bat(安卓查看APP界面元素 的工具会闪退。

【补充】

更换Android SDK在线更新镜像服务器来下载安装:

​1、北京化工大学镜像服务器地址:IPv4: http://ubuntu.buct.edu.cn/ 端口:80IPv4: http://ubuntu.buct.cn/ 端口:80IPv6: http://ubuntu.buct6.edu.cn/ 端口:802、大连东软信息学院镜像服务器地址:http://mirrors.neusoft.edu.cn 端口:803、郑州大学开源镜像站:http://mirrors.zzu.edu.cn 端口:80

使用方法:

(1) 启动 Android SDK Manager ,打开主界面,依次选择『Tools』、『Options...』,弹出『Android SDK Manager - Settings』窗口;

(2) 在『Android SDK Manager - Settings』窗口中,在『HTTP Proxy Server』和『HTTP Proxy 
Port』输入框内填入上面镜像服务器地址(不包含http://,如下图)和端口,并且选中『Force https://... sources to be fetched using http://...』复选框。设置完成后单击『Close』按钮关闭『Android SDK Manager - Settings』窗口返回到主界面;

(3) 依次选择『Packages』、『Reload』。

【win11配置环境变量】

打开如下图

把%ANDROID_HOME%\platform-tools、%ANDROID_HOME%\tools添加到Path环境变量。

ANDROID_HOME
D:\WorkSpace\android-sdk-windows%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools

检测是否配置成功。打开命令行窗口,输入adb。出现如下图所示内容则配置成功:

C:\Users\AlienwareKgx>adb
Android Debug Bridge version 1.0.41
Version 29.0.6-6198805
Installed as D:\WorkSpace\android-sdk-windows\platform-tools\adb.exe

(3) 调试模拟器!!!

1.打开安装目录,进入到bin目录(本人的路径:D:\Program Files\Nox\bin),备份adb.exe文件为adb_bak.exe;备份该目录的nox_adb.exe文件为nox_adb_bak.exe。
2.从Android SDK里(本人的路径:D:\WorkSpace\androidsdk\platform-tools目录下)复制adb.exe到D:\Program Files\Nox\bin下面;再复制一份adb.exe并重命名为nox_adb.exe。
3.启动模拟器,在D:\WorkSpace\androidsdk\platform-tools目录下鼠标右键打开控制台,执行nox_adb.exe connect 127.0.0.1:62001(每次重启模拟器最好都执行一次),然后执行adb devices,看到如下信息就表示成功。

C:\Users\AlienwareKgx>d:D:\WorkSpace\androidsdk\platform-tools>cd D:\Program Files\Nox\binD:\Program Files\Nox\bin>nox_adb.exe connect 127.0.0.1:62001
* daemon not running; starting now at tcp:5037
* daemon started successfully
connected to 127.0.0.1:62001D:\Program Files\Nox\bin>adb devices
List of devices attached
127.0.0.1:62001 device

【知识点补充】

连接好以后,打开控制台命令行窗口, 执行 adb devices -l 命令来列出连接在电脑上的安卓设备。
如果输出 类似如下的内容:List of devices attached
4d0035dc767a50bb        device product:t03gxx model:GT_N7100 device:t03g表示电脑上可以查看到 连接的设备,就可以运行自动化程序了。
上述例子是手机连接电脑,不是模拟器哈。

在模拟器里安装测试apk文件,直接将apk文件拖到模拟器里即可,本人使用白月黑夜提供的apk。

最好开启“开发者模式”

设置好手机的大小

继续在刚刚的控制台窗口里输入如下代码,其中D:\apk\wv.apk是测试apk的完整路径。

aapt dump badging D:\apk\wv.apk

效果展示:

D:\Program Files\Nox\bin>aapt dump badging D:\apk\wv.apkpackage: name='com.example.jcy.wvtest' versionCode='1' versionName='1.0'
sdkVersion:'19'
targetSdkVersion:'29'
uses-permission:'android.permission.INTERNET'
application: label='鐧芥湀榛戠窘' icon='res/mipmap-mdpi-v4/ic_launcher.png'
launchable activity name='com.example.jcy.wvtest.MainActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large' 'xlarge'
supports-any-density: 'true'
locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el' 'nl' 'pl' 'sl' 'tl' 'am' 'in' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'it' 'lt' 'pt' 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'bs_BA' 'fr_CA' 'lo_LA' 'en_GB' 'bn_BD' 'et_EE' 'ka_GE' 'ky_KG' 'km_KH' 'zh_HK' 'si_LK' 'mk_MK' 'ur_PK' 'sq_AL' 'hy_AM' 'my_MM' 'zh_CN' 'pa_IN' 'ta_IN' 'te_IN' 'ml_IN' 'en_IN' 'kn_IN' 'mr_IN' 'gu_IN' 'mn_MN' 'ne_NP' 'pt_BR' 'gl_ES' 'eu_ES' 'is_IS' 'es_US' 'pt_PT' 'en_AU' 'zh_TW' 'be_BY' 'ms_MY' 'az_AZ' 'kk_KZ' 'uz_UZ'
densities: '160' '240' '320' '480' '640' '65534'

可以看到安装包的信息都打印出来了,记录下【package: name】为'com.example.jcy.wvtest'、【launchable activity name】为 'com.example.jcy.wvtest.MainActivity'这两个名称,待会儿写测试脚本的时候要用。
注意,如果模拟器重启了,需要执行

nox_adb.exe connect 127.0.0.1:62001

(4) 需要测试的软件APP,是否没有apk、有apk

(4.1)没有apk

如果你应用已经安装在手机上了,可以直接打开手机上该应用,进入到你要操作的界面,然后执行

adb shell dumpsys activity recents | find "intent={"会显示如下,最近的 几个 activity 信息:intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=tv.danmaku.bili/.ui.splash.SplashActivity}
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000300cmp=com.huawei.android.launcher/.unihome.UniHomeLauncher}
intent={flg=0x10804000 cmp=com.android.systemui/.recents.RecentsActivity bnds=[48,1378][10322746]}
intent={flg=0x10000000 cmp=com.tencent.mm/.ui.LauncherUI}
D:\Program Files\Nox\bin>adb shell dumpsys activity recents | find "intent={"【本人实战】【在夜神模拟器打开哔哩哔哩(无需登录)】
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=tv.danmaku.bili/.MainActivityV2}
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000100 cmp=com.vphone.launcher/.launcher3.Launcher}
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10a00000 cmp=io.appium.settings/.Settings}
intent={act=android.intent.action.DELETE dat=package:com.tencent.android.qqdownloader#com.tencent.pangu.link.SplashActivity flg=0x10800000 cmp=com.android.packageinstaller/.UninstallerActivity}
intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.mysoft.yunke.ydxs/com.mysoft.core.activity.LauncherActivity}
intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.android.settings/.FallbackHome}

其中第一行就是当前的应用,我们特别关注最后

cmp=tv.danmaku.bili/.ui.splash.SplashActivity【本人实战】cmp=tv.danmaku.bili/.MainActivityV2

应用的package名称就是 tv.danmaku.bili

应用的启动Activity就是 .ui.splash.SplashActivity

(4.2)有apk

(1)如果你已经获取到了 apk,在命令行窗口执行

d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "package: name="

输出信息中,获得“应用的package名称”

package: name='tv.danmaku.bili' versionCode='5531000' versionName='5.53.1' platformBuildVersionName='5.53.1' compileSdkVersion='28' compileSdkVersionCodename='9'

(2)在命令行窗口执行

d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "launchable-activity"

输出信息中,获得“应用的启动Activity”

launchable-activity: name='tv.danmaku.bili.ui.splash.SplashActivity'  label='' icon=''

(5) 实战代码剖析

import timefrom appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey# 【目的】 bilibili自动化
# 【说明】 需要配合bilibili的apk使用
# 【python语法说明】 (1)webdriver.Chrome() 表示 类.对象() 对象实例化 (2) r'字符串' 表示不存在转义
# 【date】 20211006 14:53:00
# 【author】 xiaoke
class TestBilibili_01():def __init__(self, name):# __init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法self.name = name# 测试开始前执行的方法def setUp(self):desired_caps = {'platformName': 'Android',  # 被测手机是安卓'platformVersion': '7.1.2',  # 手机安卓版本 又称:平台名称'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写 【设备名称。如果是真机,在'设置->关于手机->设备名称'里查看,模拟器推荐填写 127.0.0.1:62001】'appPackage': 'tv.danmaku.bili',  # 启动APP Package名称 又称:apk的包名'appActivity': '.MainActivityV2',  # 启动Activity名称'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True'resetKeyboard': True,  # 执行完程序恢复原来输入法'noReset': True,  # 不要重置App'newCommandTimeout': 6000,'automationName': 'UiAutomator2'# 'app': r'd:\apk\bili.apk',}# 连接Appium Server,初始化自动化环境self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)  # 连接Appium# self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 设置缺省等待时间self.driver.implicitly_wait(8)# 结束后执行的方法def setDown(self):self.driver.quit()def work(self):# 如果有`青少年保护`界面,点击`我知道了`iknow = self.driver.find_elements_by_id("text3")if iknow:iknow.click()# 根据id定位搜索位置框,点击self.driver.find_element_by_id("expand_search").click()# 根据id定位搜索输入框,点击sbox = self.driver.find_element_by_id('search_src_text')sbox.send_keys('白月黑羽')# 输入回车键,确定搜索self.driver.press_keycode(AndroidKey.ENTER)# 选择(定位)所有视频标题elements = self.driver.find_elements_by_id("title")for element in elements:# 打印标题print(element.text)if __name__ == '__main__':# 创建 TestBilibili_01 类的第一个对象bili = TestBilibili_01("Bilibili")bili.setUp()input('**** Press to quit..')bili.setDown()

【效果】

【剖析0】报错汇总

adb连接夜神模拟器报错adb server version(36) doesn‘t match this client(41);killing...报错的问题
问题原因:Android SDK的adb版本和模拟器的adb版本不一致

【adb报错如下】
D:\Program Files\Nox\bin>adb devices
List of devices attached
adb server version (41) doesn't match this client (36); killing...
* daemon started successfully *【程序报错】
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find a connected Android device in 20151ms.
adb连接夜神模拟器报错adb server version(36) doesn‘t match this client(41);killing...报错的问题
问题原因:Android SDK的adb版本和模拟器的adb版本不一致解决办法
1、将Android SDK目录\platform-tools下的adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll替换到夜神模拟器Nox\bin目录下三个文件2、将模拟器adb路径下的nox_adb.exe文件重命名为nox_adb_bak.exe,再复制一份Android SDK的adb.exe文件到模拟器adb路径下并重命名为Nox_adb.exe3、替换完成后,重启模拟器,不行的话,重启电脑就ok了

最好也更新一下。

安装client编程库
根据原理图, 我们知道自动化程序需要调用客户端库和 Appium Server 进行通信。因为我们介绍Python语言开发,所以当然是用pip安装,如下python -m pip install --upgrade pip
pip install appium-python-clientD:\Program Files\Nox\bin>pip install appium-python-client
Requirement already satisfied: appium-python-client in d:\program files\python\python38\lib\site-packages (1.3.0)
Requirement already satisfied: selenium<4,>=3.14.1 in d:\program files\python\python38\lib\site-packages (from appium-python-client) (3.141.0)
Requirement already satisfied: urllib3 in d:\program files\python\python38\lib\site-packages (from selenium<4,>=3.14.1->appium-python-client) (1.26.7)

【剖析1】为啥要这么写?

 # 连接Appium Server,初始化自动化环境
self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)  # 连接Appium

【解答】本人编写的python程序是客户端,appium server是服务端(内嵌nodeJs) 。所以是客户端请求服务端,http服务,而服务的url为 http://127.0.0.1:4723/wd/hub (个人猜测wd 就是webDriver)

【剖析2】定位元素

【解答】

代码规则

从示例代码可以发现,和Selenium Web自动化一样,要操作界面元素,必须先定位(选择)元素。

Appium是基于Selenium的,所以 和 Selenium 代码 定位元素的基本规则相同:

  • find_element_by_XXX 方法,返回符合条件的第一个元素,找不到抛出异常

  • find_elements_by_XXX 方法,返回符合条件的所有元素的列表,找不到返回空列表

  • 通过 WebDriver 对象调用这样的方法,查找范围是整个界面

  • 通过 WebElement 对象调用这样的方法,查找范围是该节点的子节点

界面元素查看工具

做 Selenium Web 自动化的时候,要找到元素,我们是通过浏览器的开发者工具栏来查看元素的特性,根据这些特性(属性和位置),来定位元素

Appium 要自动化手机应用,同样需要工具查看界面元素的特征。

常用的查看工具是: Android Sdk包中的 uiautomateviewer 和 Appium Desktop 中的 Appium Inspector

uiautomateviewer

安卓查看APP界面元素,最常用的就是 Android SDK 中的工具 uiautomateviewer ,它在SDK目录目录 的 tools\bin 目录中

D:\WorkSpace\androidsdk\tools\uiautomatorviewer.bat本人的版本
D:\WorkSpace\android-sdk-windows\tools\uiautomatorviewer.bat

和Selenium一样,我们要定位选择元素,也是根据元素的特征,包括

  • 元素的属性
  • 元素的相对位置(相对父元素、兄弟元素等)

Appium Inspector

Appium Desktop 中的 Appium Inspector 也可以查看元素。它的一个优点是可以直接验证选择表达式是否能定位到元素。

127.0.0.1
4723
/wd/hub
{"platformName": "Android","appium:platformVersion": "7.1.2","appium:deviceName": "xxx","appium:appPackage": "tv.danmaku.bili","appium:appActivity": ".MainActivityV2","appium:unicodeKeyboard": true,"appium:resetKeyboard": true,"appium:noReset": true,"appium:newCommandTimeout": 6000,"appium:automationName": "UiAutomator2"
}platformName: 平台名称设置为Android
platformVersion:填写当前连接的Android设备的系统版本,必须正确
deviceName: 填写Android设备名称,不需要正确
app: 路径,从本地选择要测试应用的apk路径
appPackage: 测试app的package
appActivity: 测试app的StartActivity
unicodeKeyboard: 布尔值 true则禁用手机键盘
noReset: 布尔值true 则不重新安装apk,false则重新安装apk
newCommandTimeout: 6000

【剖析3】uiautomatorviewer.bat闪退

【解答】

D:\WorkSpace\android-sdk-windows\tools\uiautomatorviewer.bat (已加上被本人修改的)具体内容如下:


@echo off
rem Copyright (C) 2012 The Android Open Source Project
rem
rem Licensed under the Apache License, Version 2.0 (the "License");
rem you may not use this file except in compliance with the License.
rem You may obtain a copy of the License at
rem
rem      http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.rem don't modify the caller's environment
setlocalrem Set up prog to be the path of this script, including following symlinks,
rem and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0rem Get the CWD as a full path with short names only (without spaces)
for %%i in ("%cd%") do set prog_dir=%%~fsirem Check we have a valid Java.exe in the path.
set java_exe=
call lib\find_java.bat
if not defined java_exe goto :EOFset jarfile=uiautomatorviewer.jar
set frameworkdir=.if exist %frameworkdir%\%jarfile% goto JarFileOkset frameworkdir=libif exist %frameworkdir%\%jarfile% goto JarFileOkset frameworkdir=..\framework:JarFileOkset jarpath=%frameworkdir%\%jarfile%if not defined ANDROID_SWT goto QueryArchset swt_path=%ANDROID_SWT%
@REM 替换为自己的路径
@REM set swt_path=D:\WorkSpace\android-sdk-windows\tools\lib\x86_64goto SwtDone:QueryArchfor /f "delims=" %%a in ('"%java_exe%" -jar %frameworkdir%\archquery.jar') do set swt_path=%frameworkdir%\%%a:SwtDoneif exist "%swt_path%" goto SetPathecho SWT folder '%swt_path%' does not exist.echo Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.exit /B:SetPath
set javaextdirs=%swt_path%;%frameworkdir%call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=%prog_dir%" -jar %jarpath% %*@REM 不会马上闪退了,可以看到报错。得输入回车才会退出bat程序
@REM pause

(1)uiautomatorviewer.bat鼠标右键选编辑(本人选择pycharm打开编辑),第一行为空行,最后一行输入:pause。文件另存为 下面的编码格式选为ANSI,保存文件。(本人没有改编码格式)

这样报错就不是马上闪退了,可以看到报错。得输入回车才会退出bat程序。(感兴趣可以去学习bat)

(2)闪退原因之一:找不到swt.jar

【解决措施一】修改uiautomatorviewer.bat

D:\WorkSpace\android-sdk-windows\tools\lib\x86_64
if not defined ANDROID_SWT goto QueryArch
@REM     set swt_path=%ANDROID_SWT%--废弃set swt_path=D:\WorkSpace\android-sdk-windows\tools\lib\x86_64goto SwtDone

【解决措施二】不修改uiautomatorviewer.bat,增加环境变量

上述步骤后,发现uiautomatorviewer.bat还是报错。无法创建java虚拟机吧

(3)闪退原因之一:jdk版本不是推荐的1.8

查看jdk,发现是12的,赶紧卸载重装jdk1.8(java8)

JAVA_HOME
D:\Program Files\Java\jdk1.8.0_301%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

【结果】终于打开了uiautomatorviewer,是真的傻逼这个过程,艰辛。

如果点击后没显示,可能需要重启模拟器,真机的话可以拔usb再查回来。

【剖析3.1】uiautomatorviewer经常出现报错?

【解答】

因为它和appinum server 会有冲突,建议把appinum server关闭重启(不要关闭uiautomatorviewer哈),然后点击 Device Screenshot。

【剖析4】appium-inspector配置后报错

Failed to create session. The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource

【解答】

self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)  # 连接Appium

本人是没有配置http://127.0.0.1:4723/wd/hub 这句话(即没有配置appium server)导致的报错。

如下图所示配置

2233娘们出现了。

(6) 元素定位实战&理论

Python自动化(安卓&win11篇)

不要紧,我们在开始菜单右键,使用 Windows 终端 (管理员) 命令进入,切换到安装包所在目录,执行如下安装命令:add-Appxpackage "MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_neutral___8wekyb3d8bbwe.Msixbundle"

如果没有 ADB 怎么办?给你一个 adb-full.zip。下载解压后把压缩包内所有文件丢到你的 C:/Windows 目录即可。

本质:安装platform-tools_r31.0.3-windows.zip 。但是不推荐上述方案,C盘装了好多垃圾。还是老老实实,安装安卓SDK的方式吧。

--安装ABD前PS C:\Users\keguo> d:
PS D:\> cd D:\BaiduNetdiskDownload
PS D:\BaiduNetdiskDownload> adb version
adb : 无法将“adb”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,
然后再试一次。
所在位置 行:1 字符: 1
+ adb version
+ ~~~+ CategoryInfo          : ObjectNotFound: (adb:String) [], CommandNotFoundException+ FullyQualifiedErrorId : CommandNotFoundException--解压platform-tools_r31.0.3-windows.zip 的内容到C:/Windows后PS D:\BaiduNetdiskDownload> adb version
Android Debug Bridge version 1.0.41
Version 31.0.3-7562133
Installed as C:\Windows\adb.exePS D:\BaiduNetdiskDownload> adb connect 127.0.0.1:58526
* daemon not running; starting now at tcp:5037
* daemon started successfully
failed to authenticate to 127.0.0.1:58526----骚等一分钟后PS D:\BaiduNetdiskDownload> adb connect 127.0.0.1:58526
already connected to 127.0.0.1:58526PS D:\BaiduNetdiskDownload> adb devices
List of devices attached
127.0.0.1:58526 device--安装安卓APKPS D:\BaiduNetdiskDownload> d:
PS D:\BaiduNetdiskDownload> cd D:\BaiduNetdiskDownload
PS D:\BaiduNetdiskDownload> ls目录: D:\BaiduNetdiskDownloadMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2021/10/4     12:50                bilibili
-a----        2021/10/22      0:21       37400432 9FCB836EF1721242FD601800A01F36F5.apk
-a----        2021/10/22      0:17        1813710 Amazon.comServicesLLC.AmazonAppstore_0.0.1.0_neutral___bvztej1py64t8.Msixbundle
-a----         2021/10/3     13:50        6545512 BANDIZIP-SETUP.exe
-a----         2021/10/3     14:32      177687872 jdk-8u301-windows-x64.exe
-a----        2021/10/21     23:15     1298766098 MicrosoftCorporationII.WindowsSubsystemForAndroid_1.7.32815.0_neutral___8wekyb3d8bbwe.Msixbundle
-a----        2021/10/22      0:27       11912013 platform-tools_r31.0.3-windows.zip
-a----         2021/10/3     11:22     3957501952 ProPlus2019Retail.img
-a----         2021/10/4     17:55       71244600 typora-setup-x64.exePS D:\BaiduNetdiskDownload> adb install .\9FCB836EF1721242FD601800A01F36F5.apk
Performing Streamed Install
Success
PS D:\BaiduNetdiskDownload>

Python自动化(IOS篇)

Python-自动化测试相关推荐

  1. 阿里P8连肝一周整理出这份python自动化测试实战PDF

    由于细节内容实在太多啦,也为了不影响各位大大观看,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!总共整理了有282页的PDF文档,有需要的可以查看我文章最后. 整理了一份pyt ...

  2. selenium + python自动化测试环境搭建

    elenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点: 免费,也不用再为破解QTP而大伤脑筋 小巧,对于不同的语言它只是一个包 ...

  3. selenium+python自动化测试系列(一):登录

        最近接手商城的项目,针对后台测试,功能比较简单,但是流程比较繁多,涉及到前后台的交叉测试.在对整个项目进行第一轮测试完成之后,考虑以后回归测试任务比较重,为了减轻回归测试的工作量,所以考虑后台 ...

  4. python自动化测试框架pytest.pdf_Python自动化测试框架

    随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架.只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了开发时间.而且由于这些框架被广泛使用,他们具有很好的 ...

  5. python自动化测试看什么书-《Python自动化测试实战》终于出版!!!

    一.为什么会写这本书 1.系统梳理.可以加深对测试知识体系的系统梳理 2.名气.增加个人的名气,比如:面试时,可以很自豪的说,我是xxxx书的作者 3.利他.帮助有需要的学习者更系统.完备的学习和进阶 ...

  6. 怎么自学python自动化测试-学习自动化测试,如何学习Python语言?

    一.Python常用领域Python用于简单脚本编程,如编写2048小游戏或12306的自动抢票软件: Python用于系统编程,如开发系统应用: Python用于开发网络爬虫: 有资料奉上,可以看看 ...

  7. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  8. python自动化测试数据驱动_Python 自动化测试(四):数据驱动

    Python 自动化测试(四):数据驱动 本周测试公开课<Pytest 自动化测试最佳实践:实用特性与进阶技巧>! 在实际的测试工作中,通常需要对多组不同的输入数据,进行同样的测试操作步骤 ...

  9. python自动化测试数据驱动_利用Python如何实现数据驱动的接口自动化测试

    大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取.下面话不多说了,来一起看看详细的介绍吧. 1.需求 某API,GET方法,token,mobi ...

  10. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

最新文章

  1. 数据库内核月报 - 2017年12月
  2. python多行注释以什么开头和结尾_Python 中多行注释可以 # 开头,而单行注释则以 ''' 开头和结尾。...
  3. Eclipse Removing obsolete files from server 问题
  4. CheckBox in ListView
  5. Linux 命令之 grep -- 强大的文本搜索工具/正则表达式搜索
  6. Oracle数据库的Sequence(序列)
  7. Python 列表推导式 - Python零基础入门教程
  8. BugkuCTF-MISC题where is flag2
  9. Linux系统(Centos)下安装nodejs并配置环境
  10. B-Tree/B+-Tree/二叉树/红黑树/Hash表/MySQL底层到底用哪个数据表建立索引做快速查找?
  11. java.net.UnknownHostException 未知的名称或服务
  12. 记录一次苏宁电商延保服务的体验
  13. DeepRacer 资源合集
  14. android神器v2ex,这5个堪称神器的APP,用了让你爱不释手!
  15. 完美解决VS2003.Net fatal error LNK1201: 写入程序数据库“.pdb”时出错
  16. mac升级php后旧版本还在,老版本mac如何升级系统
  17. Java,图片在table中显示并缩放2.0
  18. 小程序源码《表情包多样版》
  19. win10常用软件汇总
  20. 从图森未来到通用、谷歌,自动驾驶怎么样了?

热门文章

  1. Delphi XE3 安装过程
  2. 你会控制情绪吗?还是被情绪控制?
  3. “国际软件自由日”活动现场记录
  4. 【转载】美工面试题总结
  5. gpg(GnuPG)生成密钥时卡住在We need to generate a lot of random bytes
  6. 【FI模块学习笔记】 资本公积概述
  7. VC++ - 各种DC及DC资源释放
  8. php生成艺术签名 上
  9. Excel如何快速将链接图片插入到表格中?
  10. 简单实现图片预加载(先下载模糊图,当高清图下载完成再替换成高清)