appium定位
打开appium启动服务器
打开appium点击检查器会话

填入所需的服务器信息,注意格式是json,不然会报错,注意标点符号是英文双引号
填入的参数
对应参数是什么意思可以看之前的文档:
{
"newCommandTimeout": "5000",
"platformName": "Android",
"udid": "7d349d5",
"deviceName": "device",
"platformVersion": "10",
"appPackage": "com.huawei.camera",
"appActivity": "com.huawei.camera",
"noReset": "true",
"automationName": "UiAutomator2"
}
启动会话
直接编辑JSON》输入内容》保存》启动会话:



检查元素
鼠标右键就可以出来检查元素了

python做ui自动化
启用一个服务器
首先我们先把我们的服务器开启,不过我们可以通过客户端启用的服务器,在测试的过程中是不需要appium客户端的。
uuid = "7d349d5"
port = 4723
th = threading.Thread(target=os.system,args=('appium -a 127.0.0.1 -p {} -U {} --session-override'.format(port, uuid),))
th.start()
我们先搭配appium客户端去控制手机,所以我们可以先不写这个线程。但是写的端口号一定要对应appium启用的端口号哦
配置一个drivers
drivers可以理解为现在连接的手机,通过各种方法去实现我们的自动化操作
def cap(uuid): #uuid是连接的设备id,可以通过adb devices获取
capabilities = {
'newCommandTimeout': '5000',
'platformName' : 'Android',
'udid' : uuid,
'deviceName' : 'device',
'platformVersion' : '10',
'appPackage' : 'com.huawei.camera',
'appActivity' : 'com.huawei.camera',
'noReset' : 'true',
'automationName' : 'UiAutomator2'
}
return capabilities
def startHW(port, uuid): # 启动相机
global driver
driver = webdriver.Remote('http://127.0.0.1:{}/wd/hub'.format(port), cap(uuid))
定位元素
可以通过定位去找到使用的功能,比如拍照按键,通过appium看到id后,在Python就可以通过id查找该元素

这个定位是个selenium的定位方法是一样的。
while 1:
try:
time.sleep(2)
driver.find_element_by_id('com.huawei.camera:id/shutter_button').click()
time.sleep(1)
print("拍照成功了")
except:
print("拍照失败哦")
startHW(port,uuid) #重启相机
time.sleep(3)
判断页面是否正常
在华为相机中的夜景模式是有拍摄延迟的,所以需要去判断是否已经完成了拍摄,可以通过sleep去等待,也可以判断元素是否出现活消失判断已经完成拍摄
n = 1
while n:
if n > 0:
over = driver.find_elements_by_id('com.huawei.camera:id/super_night_shutter')
if over is None:
print("完成拍摄了,跳出循环吧")
n=0
time.sleep(0.5)
print("还没拍完吗")

浙公网安备 33010602011771号