概述
1、启动手机脚本
#coding:utf-8
import os
import time
import unittest
from appium import webdriver
#存放配置的连接参数
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['version']='8.0.0'
#避免重签名
desired_caps["noSign"] = "true"
#避免重装
desired_caps["noReset"] = "true"
# 启用UNICODE输入,可以输入中文
desired_caps["unicodeKeyboard"] = True
#输入文字时,不打开手机键盘,也可以在手机设置中更改
desired_caps["resetKeyboard"] = True
desired_caps['deviceName']='SJE5T17819012115'#这是测试机的型号,可以查看手机的关于本机选项获得
# desired_caps['app'] = PATH('D:\qq.apk')#被测试的App在电脑上的位置
desired_caps['appPackage'] = 'com.yitong.zjrc.mfs.android'
desired_caps['appActivity'] = 'com.yitong.mbank.app.android.activity.SplashActivity'
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
time.sleep(3)
2、元素定位方式
1、抓取对象方式:
(1)#根据name进行定位,对于android来说,就是text属性
driver.find_element_by_name(u"登 录").click() ,但是appiium1.9不能使用该方法
(2)根据xpath进行定位
my_count = driver.find_element_by_xpath('//*[@text="我的账户"]'),使用相对路径的方法,利用文本内容获取对象。上级路径未知部分用*表示
丰收互联中,所有组件有区别的属性一般只有text。使用Automator自动识别出的xpath类似用浏览器开发者工具识别出的结果,即绝对路径,一般采用数组定位的,不推荐。
如采用find_element_的,如结果有多个对象,则默认定位到第一个。否则使用find_elements_
2、其他补充:
ID定位
# resourceId属性的方法
driver.find_element_by_id('com.lizi.app:id/setting_imageView').click() 也可以直接从id后面写:setting_imageView
#以accessibility_id进行定位,对Android而言,就是content-description属性
driver.find_element_by_accessibility_id('push_button').click()
ClassName 定位
# 定位唯一元素
self.driver.find_element_by_class_name("android.widget.EditText")
# 找到所有android.widget.EditText并定位第一个
self.driver.find_elements_by_class_name("android.widget.EditText")[0]
Name 定位:某些appium版本不支持
#根据name进行定位,对于android来说,就是text属性
driver.find_element_by_name(u"登 录").click()
Xpath 定位:可根据某一个元素属性定位
driver.find_elements_by_xpath('//android.widget.TextView[@resource-id="com.mzdk.app:id/item_good_title"]')[1].click()
3、输入框:
密码键盘无法使用send_keys方法输入,实现思路如下:
对手机数字全键盘进行截屏,并对每个数字或者字母进行截屏。操作时,传入要点击的数字或字母名字以及对应的图片名字,与全键盘图片进行比较,确定其坐标,手机上点击(使用TouchAction)相应的坐标位置即可。但要注意,手机全键盘可以使用automator截屏,但是数字键盘必须使用画图编辑器进行截取,不能改变其原有的分辨率。
主要使用cv2图像处理中的匹配算法实现:res = cv2.matchTemplate(img_rgb, template, cv2.TM_CCOEFF_NORMED)
4、appium+python:触摸操作和多点触控(TouchAction、MultiTouch):主要针对手势操作,比如滑动、长按、拖动等。针对最新版本(5.0.4)已不支持swipe等方法,所以可以用TouchAction类来封装成新的swipe方法。详见Appium自动化测试之 TouchAction 操作
最后
以上就是执着香水为你收集整理的移动端自动化笔记的全部内容,希望文章能够帮你解决移动端自动化笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复