文章目录
前言
一、appium工作原理
Appium通信原理:Client端发送自动化指令给Appium server,Appium Server接收到client发送的指令后,转换为移动端能够识别的指令,然后发送给移动端设备,并对移动端设备进行操作。
在Android设备的工作过程:
1.Appium server将监听到的4723端口的指令,转发给中间件Bootstrap.jar,Bootstrap.jar是用Java编写的,安装在Android手机上;
2.Bootstrap监听4724端口并接收Appium server的指令;
3.Bootstrap再通过调用UIautomator的命令来实现具体的command操作。
4.最后Bootstrap将执行的结果返回给Appium server。
二、录制用例
1、开启appium server
2、adb 连接 手机或者模拟器
192:~ yingyan$ adb connect 127.0.0.1:62001
3、打开appium inspector 建立会话
4、录制脚本
5、拷贝修改使用
0)连接Appium Server,初始化自动化环境
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '7.1.2', # 手机安卓版本
'deviceName': 'xxx', # 设备名,安卓手机可以随意填写,苹果要写具体的
'appPackage': 'tv.danmaku.bili', # 启动APP Package名称 cmp=tv.danmaku.bili/.ui.splash.SplashActivity
'appActivity': '.ui.splash.SplashActivity', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App
'newCommandTimeout': 6000,
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)`
1)定位可以根据需要修改
2)设置隐形等待,提高稳定性
# 设置缺省等待时间,10s钟以内完成以下操作
driver.implicitly_wait(10)
el1 = driver.find_element(by=AppiumBy.ID, value="tv.danmaku.bili:id/expand_search")
el1.click()
el2 = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="搜索查询")
el2.send_keys("python")
el3 = driver.find_element(by=AppiumBy.XPATH, value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[2]/android.widget.FrameLayout/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[1]/androidx.recyclerview.widget.RecyclerView/android.view.ViewGroup[7]")
el3.click()
3)python需要安装包
pip3 install appium-python-client
4)执行,完成