【java环境变量配置】
接着,打开系统->高级系统设置->环境变量。新建一个JAVA_HOME
C:\Program Files\Java\jdk1.8.0_201(这里是你的安装路径,最好复制粘贴)
然后在Path下添加
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
然后打开cmd,输入javac,若出现以下信息,则证明你成功了一半。
输入java,若出现以下信息,则证明java环境变量配置成功了。
接下来我们开始测试。在F盘新建一个java文件。我的是debug.java。
然后,切换到F盘。分别执行
-
javac debug.java
-
java debug
然后成功输出10.java环境检验成功。
【appium配置】
一、Appium安装:
1)安装Python
2)安装java(运行appium server需要)
3) 安装appium-client: pip install Appium-Python-Client
4) 安装appium –desktop:
官网下载appium-desktop地址为:Release v1.15.1 · appium/appium-desktop · GitHub
安装成功后桌面会有一个紫色的图标,打开Appium,配置默认点击“start server”启动appium-desktop。
5) 安装Andorid SDK:
下载地址:https://www.androiddevtools.cn/,网页下拉到底部的SDK Tools位置处,选择对应系统版本即可。
下载完成后解压,cmd窗口进入tools\bin目录,输入命令行执行安装组件:sdkmanager "platfrom-tools" "platforms;android-28" "build-tools;28.0.3"
安装过程中,会弹出提示框Accept?(y/N) 一直yes即可。
二、Andorid SDK设置环境变量:
1)去电脑系统属性--环境变量--系统变量里 创建ANDROID_HOME 值设置为SDK根目录的路径;
2)将sdk\plafrom-tools\加入到环境变量path中;
3)验证是否设置成功:运行cmd打开命令提示窗,输入where adb 能够显示出其所在路径即OK;
4)查看Android_home的环境变量是否正确,可以在tools/bin目录下输入echo %android_home% 能够显示出android sdk安装路径即OK;
遇到问题
- 将Android studio与夜神模拟器连接,在夜神模拟器的bin路径下,
adb devices
,此时遇到当前夜神模拟器的adb版本与android 的SDK版本不一致的错误,
解决办法
- 把AndroidSDK\platform-tools下的adb.exe赋值到桌面上,重命名为nox_adb.exe
- 把夜神模拟器下的nox_adb.exe修改为nox_adb_old.exe
- 把桌面上的nox_adb.exe拷贝到夜神模拟器下bin路径下
- 重启夜神模拟器
【问题】
在Android 真机上无法运行Appium inspector?Failed to create session
Appium连接真机启动步骤 (Appium版本为1.22.2)
1、 打开Appium desktop,找到已安装的Appium,名字为Appium Server GUI
打开后启动服务器
by the way:修改Appium菜单显示为中文的位置在这儿
View -》Languages -》zh-CN
2、 手机通过USB连接电脑,并开启开发者调试模式
3、 命令行下输入:adb devices 检查手机连接是否成功
出现有设备信息即代表连接成功,如下:
4、 打开Appium Inspector并配置常规参数,如下:
1、 远程路径:/wd/hub
2、 配置的参数为:
{
"platformName": "Android", //平台
"appium:platformVersion": "12", //android系统版本
"appium:deviceName": "测试机", //设备名称随便写
"appium:automationName": "UiAutomator2" //使用的自动化工具
}
这样按照网上的教程已配置好了,点击“启动会话”
啊噢。。。。。报错了
错误信息:
Failed to create session. An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command 'D:\\androidSDK\\platform-tools\\adb.exe -P 5037 -s f30a1e7b shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2663) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1635) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1627) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1598) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:664) at android.content.ContentProvider.call(ContentProvider.java:2473) at android.content.ContentProvider$Transport.call(ContentProvider.java:521) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:408) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:282) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:50) at
问题解决方法:
第一步:
配置参数中添加参数 "appium:ignoreHiddenApiPolicyError": true
点击“启动会话”,此时手机上会自动安装“Appium Settings”,需要手动去点击同意完成安装
此时我仍遇到了报错,经过查找一番,还漏掉了最重要的一步
第二步:
手机“设置”中搜索“禁止权限监控”,并打开它(设置->系统设置->开发者选项->禁止权限监控)
打开后再次点击“启动会话”,手机上的画面显示到了Appium inspector中即连接成功了
【模拟夜神浏览器】】
1、
测试
先打开夜神模拟器,然后cmd进入到安装路径的bin目录下,分别执行如下命令:adb.exe connect 127.0.0.1:62001
(用来链接模拟器,62001为夜神模拟器监听端口号,如果是其他模拟器,修改为其对应的监听端口号即可[常用Android模拟器的默认监听端口(转载)])adb devices
(用来显示已连接的设备)
如果显示如下,则配置成功:
直接使用Appium操控模拟器
前提
使用Appium时,需要用到两个参数: appPackge
与appActivity
。appPackage
是启动APP Package名称,也就是需要操控的App名称。 appActivity
是启动Activity名称,也就是启动App后的第一个界面。
以下是获取这两个值的方法: (以操控bilibli为例):
打开模拟器,然后打开bilibili,保持当前的运行界面(bilibili在最前面):
然后cmd输出命令:adb shell dumpsys activity recents | find "intent={"
输出如下:
C:\Users\xupeng>adb shell dumpsys activity recents | find "intent={"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=0x10000100 cmp=com.vphone.launcher/.launcher3.Launcher}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.android.settings/.FallbackHome}C:\Users\xupeng>
输出信息第一条就是屏幕最前面App(也就是bilibili)的信息,需要的是其中字段cmp
的值:tv.danmaku.bili/.ui.splash.SplashActivity
,/前的tv.danmaku.bili
就是appPackge
的值,/后的.ui.splash.SplashActivity
就是appActivity
的值。
步骤
1 打开Appium
运行Appium,界面如下:
点击Edit Configurations,配置JAVA_HOME
与ANDROID_HOME
。
由于在安装JDK
和Android Studio
时已经设置了JAVA_HOME
E和ANDROID_HOME
,它就直接能够取到相应的值。
2 点击Start Server按钮,启动监听
无需修改Host与Port,,点击Start Server,进入如下界面:
最后一行输出表示Appium启动成功并在端口4273进行监听。
3 点击Start Inspector Session按钮,配置相关信息
点击右上角最左边的Start Inspector Session,进入如下界面,然后在Automatic Server页面下输入相关参数:
其中,platformName
为Android(因为是Android模拟器),platformVersion
为7.1.2(在模拟器的设置中的关于平板电脑中可以看到Android版本),deviceName
为127.0.0.1:62001是模拟器的Ip地址+端口(前面已经介绍)。
4 点击Start Session按钮,操控模拟器
最后,点击Start Session按钮,Appium就开始操控模拟器打开bilibili,过程中会在模拟器中安装名为Appium Settings的App,当然这只会在不存在Appium Settings才会安装,接着就是等待过程,最后的呈现效果如下:
同时模拟器中也就呈现出相同的界面:
2、
这没什么好说的。只需注意安装路径,一路下一步即可。
安装后,进行以下简单修改:
-
打开安装目录,进入bin目录(例如:D:\Nox\bin)
-
在第3节安装的Android SDK中添加ADB的exe文件(例如我在D:\Android\SDK\platform tools目录下)复制到这个目录下,覆盖已有的ADB的exe文件
-
删除目录_adb.exe文件的NOx,然后复制一份ADB Exe并重命名为nox_adb.exe
-
启动模拟器
-
从这个目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices。看到以下信息表示成功
在模拟器中安装测试 apk 文件。这里以计算器为例,直接将apk文件拖入模拟器
! zoz100077](https://programming.vip/images/doc/2673e577cdd3d75dfb5d4f986b75b95a.jpg)
继续进入AAPT dump bake D:\apk\com。在刚才的控制台窗口中有道。计算器-2.0.0。 APK
其中D:\apk\com 有道。计算器-2.0.0。 Apk 是测试 APK 的完整路径。
可以看到安装包的信息已经打印出来了。把两个名字记在红框里,以后写测试脚本的时候用。
注意如果模拟器重启,需要在步骤5_adb中执行NOx。 exe连接127.0.0.1:62001 七。编写测试脚本并生成测试报告
1\。创建测试用例目录testcase,并在该目录下创建测试_app。 py文件
进口时间
导入单元测试
从 appium 导入 webdriver
类 MyTests(unittest.TestCase):
测试前要执行的方法
定义设置(自我):
所需_caps u003d {'platformName': 'Android', # 平台名称
'platformVersion': '4.4.2', #系统版本号
'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在“设置->关于手机->设备名称”中查看
'appPackage': 'com.youdao.calculator', # apk的包名
'appActivity': 'com.youdao.calculator.activities.MainActivity' # 活动名称
}
self.driver u003d webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接 Appium
self.driver.implicitly_wait(8)
def test_calculator(self, tu003d500, nu003d4):
"""计算器测试"""
时间.sleep(3)
窗口 u003d self.driver.get_window_size()
x0 u003d window['width'] * 0.8 # 起始x坐标
x1 u003d window['width'] * 0.2 #结束x坐标
y u003d window['height'] * 0.5 # y坐标
对于范围内的 i (n):
self.driver.swipe(x0, y, x1, y, t)
时间.sleep(1)
self.driver.find\element\by\id('com.youdao.calculator:id/guide\button').click()
对于范围内的 i (6):
self.driver.find_element_by_accessibility_id('Mathbot Editor').click()
时间.sleep(1)
btn_xpath u003d '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4 .widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[3] /android.view.View/android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'
self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
时间.sleep(3)
测试后执行的方法
def 拆解(自我):
self.driver.quit()
2\。创建运行 Py 文件
导入我们
进口时间
导入单元测试
从 HTMLTestRunner 导入 HTMLTestRunner
测试_dir u003d './testcase'
发现 u003d unittest.defaultTestLoader.discover(start_diru003d'./testcase', patternu003d"test*.py")
如果 __name__ u003du003d "__main__":
报告_dir u003d './test_report'
os.makedirs(report_dir, 存在_oku003dTrue)
现在 u003d time.strftime("%Y-%m-%d %H-%M-%S")
报告_name u003d '{0}/{1}.html'.format(报告_dir,现在)
使用 open(report_name, 'wb') as f:
runner u003d HTMLTestRunner(streamu003df, titleu003d"测试报告", descriptionu003d"此测试报告包含超级计算机的简单测试")
runner.run(发现)
HTMLTestRunner是用来导出测试报告的,但是Python 3好像有问题,我在网上找了两个修改的支持Python 3的,
如有需要,您可以在本文末尾的示例项目中下载。
3\。运行 py 文件
程序运行后会在test_report目录下生成测试报告
在浏览器中打开就可以看到报表的内容,一个例子
而已。这一切都完成了。如果有空,可以添加Appium的使用,比如元素定位。希望这篇文章能够对自动化测试的初学者有所帮助。
项目示例下载地址 https://github.com/lixk/apptest
艾玛,我太啰嗦了。现在已经八点了,我还没有吃晚饭。我太饿了。今天我先到这里。
2019 年 5 月 21 日补充
如果配置与上述步骤一致,则没有问题。结果,它无法正常运行。那么问题可能出在模拟器配置中。下面添加了我这边的模拟器配置。
! swz 100101 swz 100102 swz 100100
代码中的'platform version':'4.4.2'是上图中的Android版本。
5【】.调试】
打开夜神模拟器,cmd输入:adb devices,显示夜夜神模拟器的端口号信息。
C:\Users\Administrator>adb devices
List of devices attached
127.0.0.1:62001 device
夜深模拟器中打开浏览器,cmd输入:adb shell。进入adb shell后输入:dumpsys activity | grep mFocusedActivity
C:\Users\Administrator>adb shell
x1q:/ # dumpsys activity | grep mFocusedActivity
mFocusedActivity: ActivityRecord{ab87ba5 u0 com.android.browser/.BrowserActivity t7}
x1q:/ #
APP包名: com.android.browser
APP进程名:.BrowserActivity
打开Appium Server GUI,点击startServer后点击放大镜,下载元素查看器。下载地址:https://github.com/appium/appium-inspector/releases
安装成功后,appium inspector的Remote Host和appnium server 的Host设置为:127.0.0.1,Remote Path:/wd/hub,设置Desired Capabilities,如下图。点击startSession后连接并自动操作夜深模拟器。至此,调试成功。
注意:安卓模拟器在网络桥接模式下无法使用appium连接。
{
"appium:platformName": "Android", #平台名称
"appium:platformVersion": "7.1.2", #版本信息
"appium:deviceName": "SM-G9810", #设备型号
"appium:appPackage": "com.android.browser", #App包名
"appium:appActivity": ".BrowserActivity" #App进程名
}
【错误总结】
1、cmd中adb devives报错,退出各个可能占用的软件,并调试
2、报错不能verify,更新jdk版本,或者下载jar包
【记录】
aapt dump badging C:\Users\Administrator\Desktop\wycjjsq.apk
com.youdao.calculator
com.youdao.calculator.activities.MainActivity
adb shell dumpsys activity recents | find "intent={"
C:\Users\xupeng>adb shell dumpsys activity recents | find "intent={"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=0x10000100
cmp=com.vphone.launcher/.launcher3.Launcher}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10800100 cmp=com.android.settings/.FallbackHome}C:
\Users\xupeng>
{
"platformName": "Android",
"appium:platformVersion": "9",
"appium:deviceName": "HJSGK19C18000009",
"ignoreHiddenApiPolicyError": true
}
【夜游神】模拟器连接
{
"platformName": "Android",
"appium:platformVersion": "7",
"appium:deviceName": "127.0.0.1:62001",
"appium:ignoreHiddenApiPolicyError": true
}
模拟登录手机app界面
{ "platformName": "Android", "appium:deviceName": "HWEVA", "appium:appPackage": "com.tencent.mm", "appium:appActivity": ".ui.LauncherUI" }