Appium连接真机
2019-01-30 本文已影响14人
jinxi197
配置参数
- 在网上看了好多的文章,但是Appium Desktop一直报错,始终都没有连接上手机,今天准备搜索文章的时候想到有可能是我之前搜索有问题,所以就换了搜索内容,没想到就出来了
- 文章连接:卡尔西法ishere
- 连接参数意义
- platformName:平台名称,iOS、Android、 FirefoxOS,选择真机/模拟器对应的就好
- platformVersion:平台版本,可在手机设置中的关于手机查看
- deviceName:设备名称
- appPackage:要运行的Android应用程序的Java包(获取方式在上方给出的文章中,只试了第三种)
- appActivity:从程序包启动的Android活动的活动名称
- noReset:不在此会话之前重置应用程序状态(意思就是每次启动都当做第一次启动,因为首次进入某些应用时有的会有弹框,所以测试时可以设置为True),默认为False
-
我之前只写了这些参数,运行的时候总是报错,后来加了一个参数就可以正常连接成功了,我不知道为什么(如果有知道的请告诉我,我也学习学习,谢谢)
报错图片 - udid:连接的物理设备的唯一设备标识符,可通过adb devices查看,就是一串数字和字母组成的字符
- 更多的参数意义可查看官网
测试案例
- 测试的案例是计算机
- 首先appium连接手机成功
- 点击Start Session,成功后就说明连接上了
- 左边显示手机界面,中间显示app 的源代码,最右边会显示我们选中的元素
- 左边手机界面选中了元素,最右边会显示id、xpath,以便于写代码定位元素
- 例如需要计算机自动计算1595+6等于多少
- 可以一个一个的选择每个字符的id是多少,然后利用python代码选中该元素
python代码
- 代码来自于虫师
from appium import webdriver #导入webdriver库
import time #导入时间模块
desired_caps = {} #配置参数的字典
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '6.0'
desired_caps['deviceName'] = 'OPPO R17 Pro'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = 'com.android.calculator2.Calculator'
desired_caps['udid'] = 'xxxx' #xxxx不是真的udid,写真的udid
desired_caps['noReset'] = 'True'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #第一个参数是默认的,不需要更改(wd 可以理解是WebDriver 的缩写)
driver.find_element_by_id("com.android.calculator2:id/digit_1").click() #通过id找到数字1并且点击
driver.find_element_by_id("com.android.calculator2:id/digit_5").click()
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/del").click() #点击删除键
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()
driver.find_element_by_id("com.android.calculator2:id/digit_5").click()
driver.find_element_by_id("com.android.calculator2:id/op_add").click() #点击‘+’
driver.find_element_by_id("com.android.calculator2:id/digit_6").click()
driver.find_element_by_id("com.android.calculator2:id/eq").click() #点击‘=’
time.sleep(5) #这个是为了能够看清结果,可删除
driver.quit()