1,启动夜神模拟器
1,解决adb版不兼容问题
遇到问题:
目前运行服务器端的adb版本(也就是夜神模拟器的adb版本)比客户端的版本(也就是SDK目录下的adb版本)低。
报错信息如下:
adb server version(31)does not (36);杀死...
解决办法:
a,关掉夜神模拟器。同时去任务管理器里看下,adb.exe以及nox_adb.exe这2个进程有没有在运行?有的话就结束掉
。b,找到SDK的目录和夜神模拟器的目录,将SDK目录(C:\ Program Files(x86)\ Android \ android-sdk \ platform-tools)下的adb.exe文件,复制到夜神模拟器的目录(C:\ Program Files(x86)\ Nox \ bin)下,将夜神模拟器目录下原本的adb.exe和nox_adb.exe修改文件名为adb_bak.exe和nox_adb_bak.exe,将从SDK目录复制过来的adb.exe放在夜神目录下,同时复制一份改名为nox_adb.exe。
2,启动夜神模拟器设备
打开CMD命令行,进入夜神安装目录,执行如下命令:
cd D:\Program Files (x86)\nox\bin nox_adb.exe connect 127.0.0.1:62001
- 1
- 2
在cmd命令行中,输入:adb devices查看存在
:127.0.0.1:62001设备
即为成功!adb devices
- 1
3,安装测试应用程式
将测试app.apk安装包拖到夜神模拟器即可安装测试应用程序。
2,运行与使用Appium
安装完成桌面会生成一个紫色的appium 图标,双击打开。
默认显示监控的 host 和 port ,这和 Appium-Server中是一致的。点击 “Start Server V 1.7.1” 按钮启动服务。
现在,编写 Appium 自动化测试脚本,可以通过Appium-desktop 来运行测试了。
3、编写Appium自动化测试脚本
1、脚本讲解
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
desired_caps = {}
desired_caps['platformName'] = "Android" # 声明是ios还是Android系统
desired_caps['platformVersion'] = '4.4.2' # Android内核版本号,可以在夜神模拟器设置中查看
desired_caps['deviceName'] = '127.0.0.1:62001' # 连接的设备名称
desired_caps['appPackage'] = 'com.taobao.taobao' # apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' # apk的launcherActivity
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 建立 session
time.sleep(5)
driver.find_element_by_id("************").click() # 点击元素
driver.find_element_by_xpath("************").click() # 点击元素
driver.find_element_by_xpath("************").send_keys(u'123456') # 发送键值
driver.quit() # 退出 session
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
2、Appium获取元素的方式
通过xpyth定位:find_element_by_xpath(“//android.widget.TextView[10]”) xpath下标从1开始,使用完整的classname
通过text name:find_element_by_name(name对应uiautomator扫描后text的内容)
通过id:find_element_by_id(id对应resource-id)
通过classname定位:find_element_by_class_name(class_name对应class)
通过accessibility id:find_element_by_accessibility_id(accessibility_id对应content-desc)
定位到某个文本框,并输入内容:
driver.find_element_by_id(“xxxxx”) .send_keys(“123456”)
滑动屏幕:
获取屏幕尺寸 width=self.driver.get_window_size()[‘width’] height=self.driver.get_window_size()[‘height’]
滑动屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000)
3、获取apk包名和launcherActivity
- 把测试app.apk放在D:\test\文件夹下
- 打开cmd命令行,输入:aapt dump badging D:\ test \ app.apk(apk的全名,比如:手机淘宝.apk)
这里可以看到apk包名:com.taobao.taobao - 获取launcherActivity
可以得到launcherActivity为:com.taobao.tao.welcome.Welcome
4,获取APK元素
- 首先执行测试脚本
- 使用Appium的“开始检查器会话”
- 启动会话查看UI元素
依次如图产品所示:
图一:
图二:
图三: