环境搭建

安装JDK

1. Java Downloads | Oracle 下载JDK安装包,按照默认方式无脑按照即可

2. 设置系统环境变量,系统环境变量添加JAVA_HOME, 路劲是jdk安装路径

3. 系统Path变量添加jdk和jre的bin目录

安装nodejs

Node.js 中文网 下载安装包,默认方式安装即可

下载adb

1. 下载adb

方法一:安装Android Studio, 通过其所带的SDK manager 下载adb.

Android Studio 官方地址Download Android Studio & App Tools - Android Developers

安装成功后打开sdk manager并设置sdk路径,然后下载tool,这个路径等下要设置到ANDROID_HOME系统变量。在此路径下会有platform_tools里面就有需要的adb.exe。

方法二: 直接下载SDK manager 包

我通过方法一,将SDK manager下载到目录 C:\Users\Public\Android,在其platform-tools目录下就有所需的adb.exe。

2. 设置环境变量,系统环境变量添加ANDROID_HOME

3. 系统Path变量添加adb.exe所在路径

安装模拟器

1. 下载安装模拟器

夜神模拟器要替换其自带的nox_adb.exe。

nox_adb.exe在夜神模拟器安装目录的bin目录下,我这是C:\Program Files (x86)\Nox\bin。把上面下载的adb.exe复制到nox_adb.exe所在目录并重命名成nox_adb,替换到原来的nox_adb.exe。

安装appium server

下载地址 https://github.com/appium/appium-desktop/releases/

亲测最新1.22.0的版本启动后会报找不到/Session路径的错误,用1.21.0的版本正常。

Appium 连接模拟器

1. 启动模拟器后,中通过命令 nox_adb.exe connect 127.0.0.1:$模拟器端口$ 连接模拟器

模拟器 端口号
夜神模拟器 62001、52001
逍遥模拟器 21503
海马玩模拟器 26944
mumu模拟器 7555
天天模拟器 6555
Genymotion 5555
雷神模拟器 5555
蓝叠模拟器 每次启动不一样,可以到设置->高级->Android调试(ADB)查看

2. 启动Appium

直接通过desktop程序运行,或者命令行启动appium。

3. 打开Appium inspector工具,并填入以下信息,点击start session按钮即可连接,然后可以通过inspector工具查看元素的信息。

除了这三个信息,如果指定测试app,还可以提供和appActivity。这两个属性的获取方式如下:

方法一:

在上面提到的android sdk路径下,build_tool/$sdk_版本号$/ 路径里有aapt.exe, 使用以下命令:

aapt.exe dump badging $电脑上apk文件路径$

输出的信息中,package: name就是appPackage, launchable-activity就是appActivity

方法二:

adb shell dumpsys activity activities | findstr $app名$

以Chrom浏览器为例,通过命令可以得到输出intent={cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.chrome/org.chromium.chrome.browser.ChromeTabbedActivity}

其中cmp=里com.android.chrome是appPackage,org.chromium.chrome.browser.ChromeTabbedActivity是appActivity

4. python连接appium server, 并操Chrome浏览器

import time
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver import Remote
from appium.webdriver.webelement import WebElement as MobileWebElementclass AppiumClient:def __init__(self, os_name: str, os_version: str, device_name: str):self.caps = dict()self.caps['platformName'] = os_nameself.caps['platformVersion'] = os_versionself.caps['deviceName'] = device_nameself.caps['resetKeyboard'] = Trueself.driver: Remote = Nonedef __del__(self):if self.driver:self.driver.quit()def launch_app(self, package: tuple = None, app_path=''):""":param package: tuple (appPackage, appActivity):param app_path: apk path in PC:return:"""try:if app_path:self.caps['app'] = app_pathif package:self.caps['appPackage'] = package[0]self.caps['appActivity'] = package[1]self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", self.caps)return Trueexcept Exception as e:print(str(e))return Falsedef find_element(self, who: str, by: str):print('look for %s by %s' % (who, by))element: MobileWebElement = self.driver.find_element(by, who)return elementdef click(self, who: str, by=AppiumBy.ID):element = self.find_element(who, by)if element:print('click %s' % element)element.click()return Trueelse:return Falsedef input(self, text: str, who: str, by=AppiumBy.ID):element = self.find_element(who, by)if element:print("send text %s" % text)element.click()element.send_keys(text)return Trueelse:return Falsedef back(self):print('back')self.driver.back()def wait_element(self, who: str, by=AppiumBy.ID, time_out=30):for i in range(time_out):element = self.find_element(who, by)if element:return Trueelse:print('sleep 1s wait for %s' % who)time.sleep(1)print('wait %s more than %ds' % (who, time_out))return Falsedef get_attributes(self, who: str, by=AppiumBy.ID):element = self.find_element(who, by)if element:attributes = dict()attributes['checkable'] = element.get_attribute('checkable')attributes['long-clickable'] = element.get_attribute('long-clickable')attributes['clickable'] = element.get_attribute('clickable')attributes['checked'] = element.get_attribute('checked')attributes['selected'] = element.get_attribute('selected')attributes['text'] = element.get_attribute('text')attributes['focused'] = element.get_attribute('focused')return attributeselse:return Nonedef print_all_element(self):print(self.driver.page_source)if __name__ == "__main__":client = AppiumClient('Android', '7.1.2', 'OnePlus5')client.launch_app(('com.android.chrome', 'org.chromium.chrome.browser.ChromeTabbedActivity'))client.wait_element('com.android.chrome:id/url_bar') # 通过inspctor获得IDprint(client.get_attributes('com.android.chrome:id/url_bar'))print(client.get_all_element())input()

windows下Appium测试环境搭建, 并配合python操作模拟器相关推荐

  1. Windows下Android开发环境搭建和配置

    关于Windows下Android开发环境搭建.配置方面文章,网上一搜一堆,为方便以后参考,权且做个记录,主要关注安装过程中的注意事项.对新手提醒的是,本文介绍SDK开发Android APK环境搭建 ...

  2. Windows下Android开发环境 搭建

    1. 下载Android SDK (1)官网下载解压后即可用. 在http://androidappdocs.appspot.com/sdk/index.html 下选择 合适自己的平台下载,下载后解 ...

  3. windows下app爬虫环境搭建:python + fiddler + Appium + 夜神模拟器

    python.夜神模拟器自行下载安装 1.安装java https://www.oracle.com/java/technologies/downloads/#jdk19-windows 注意安装ja ...

  4. windows下ffmpeg+nginx-rtmp环境搭建及opencv+ffmpeg+python实现拉流和rtmp直播推流

    由于工作需要最近在研究rtsp拉流与直播推流的问题,目前先在我本机上进行了实验,本博客记录学习的内容,包含windows下ffmpeg.nginx-rtmp环境搭建及opencv+ffmpeg+pyt ...

  5. windows下pomelo开发环境搭建及JS乱码问题

    from: http://blog.csdn.net/wangqiuyun/article/details/9243263 最近一直在研究node.js这一块,为的就是使用网易的pomelo框架,学习 ...

  6. Windows下 OpenAcs测试平台搭建

    OpenAcs从ACS测试演变过来,由于我是实习生,在公司还没呆两天,所以搭建建个平台先练练手,顺便熟悉下公司的业务. 顺便提一下,我实习公司是NetCore. 搭建大体流程以及软件 搭建环境: Wi ...

  7. Lua 在Windows下的运行环境搭建

    掌握lua语言,搭建在Windows下的开发调试环境,安装Lua For Windows这套工具. <一.下载并且安装:> Lua For Windows 的官方网站:(推荐5.1) ht ...

  8. Windows下Erlang开发环境搭建

    1.下载otp_win32_R15B.exe,并安装: 2.配置环境变量 a.增加用户变量ERL_HOME,变量值为C:\Program Files\erl5.9(erlang的安装路径). b.编辑 ...

  9. Web自动化测试 —— 测试环境搭建 (Selenium+Python)及视频操作

    一.什么样项目适合做web自动化 1.软件需求不会频繁的变更. 2.项目周期比较长. 3.自动化的脚本能够重复利用. 介入点:第一个版本的核心功能确认以后,系统测试. 自动化的实施过程: 1.可行性分 ...

最新文章

  1. 传蔚来计划回国内科创板上市,关闭硅谷办公室
  2. ffmpeg流文件合并concat
  3. 用键盘上下左右键和ctrl键移动TreeView节点
  4. 7 centos ssh 单机_虚拟机下CentOS7 开启SSH连接
  5. 云时代的智能运维平台,助力企业创新迭代
  6. 开心网分析,师从“中国缘”
  7. 15. 3 Sum (C,Python)
  8. 进入方法内快捷键_肝货|驱动安装流程驱动amp;快捷键设置(一)
  9. 利用DataSet、DataTable、DataView按照自定义条件过滤数据
  10. 南京IT企业环境之最深心得体会
  11. [UE4]关闭自动曝光
  12. 存储区域网络(SAN)
  13. Procdump+Mimikatz获取Windows明文密码
  14. virtualbox中linux设置NAT和Host-Only上网(实现双机互通同时可上外网)
  15. 深度学习框架zf_深度学习十大框架比较
  16. html时间戳转日期
  17. 测试计划、测试方案、测试策略、测试用例的区别
  18. ceph radosgw-admin的操作
  19. LeetCode基本记录【2】// BASIC NOTES AND CODES OF LEETCODE [ 2 ]
  20. Arduino连接pH计

热门文章

  1. 建议收藏 | 应用程序无法安装MAC系统或解决的办法
  2. 日期格式转换oracle,Oracle 关于日期格式转换与使用
  3. 为什么虚拟现实视频看上去那么粗糙?
  4. 烟气分析仪行业调研报告 - 市场现状分析与发展前景预测
  5. C#读写各型号西门子PLC
  6. 欧盟剔除英国、瑞士和以色列开展量子计算遭声讨,科学无国界成伪命题
  7. 如何在SOLIDWORKS工程图中,快速进行尺寸标注?
  8. 4位右移寄存器模型(D触发器)
  9. 日本 NTT Data 逾30亿美元收购戴尔 IT 服务部门
  10. 工期概率计算_如何从文本和数字单元格值计算工期