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("还没拍完吗")

  

posted @ 2021-12-13 18:11  哇!彦祖  阅读(94)  评论(0)    收藏  举报