赞
踩
import unittest
from appium import webdriver
desired_caps = dict()
desired_caps['platformName'] = 'Android' #系统
desired_caps['platformVersion'] = '10.0' #系统版本
desired_caps['deviceName'] = 'Android Emulator' #使用的手机类型或模拟器类型
desired_caps['noReset'] = True #不需要每次都重新安装
desired_caps['app'] = PATH('../app.apk')
desired_caps['automationName'] = 'Uiautomator2'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #指定到appium desktop所监听的端口
INTERVAL = 1
time.sleep(INTERVAL * 5) #主动等待时间
上诉设置好后,下面就可定位进行操作 .click()等
(定位元素/parent::父亲属性)
‘//android.widget.TextView[contains(@text=“欢迎观临”)]/parent::android.view.ViewGroup’
但实际可通过如下命令达到,操作父子级别的元素 “/”
操作的是按钮index为2的按钮,下的一个子元素 ImageView
‘//android.widget.Button[@index=“2”]/android.widget.ImageView’
(定位元素/preceding-sibling::兄属性,[2]表示往上第二个哥哥)
‘//android.widget.TextView[contains(@text=“标题1”)]/preceding-sibling::android.view.ViewGroup[2]’
(定位元素/following-sibling::弟属性,[2]表示往下第二个弟弟
‘//android.widget.TextView[contains(@text=“标题2”)]/following-sibling::android.view.ViewGroup[2]’
实际可通过如下path定位操作…/
表示在任意一个元素下有两个同级元素,TextView与ViewGroup
通过../可定位到一个叫大标题的TextView相邻的ViewGroup元素,并对其操作
‘//android.widget.TextView[@text=“大标题”]/…/android.view.ViewGroup[3]’
如下命令表示,从任意元素开始;找到一个ViewGroup元素(class实际就是Xpath定位)并且他的index为2,;而后跨过一个为ViewGoup的任意子元素,并且这个子元素下有一个ViewGroup为3的元素。
从而达到,控制元素目的,可以任意组合。
‘//*[@class=“android.view.ViewGroup” and @index=“2”]/android.view.ViewGroup/android.view.ViewGroup[3]’
Appium处理滑动方法是swipe
滑动API:Swipe(int start x,int start y,int end x,int y,duration)
解释:
int start x-开始滑动的x坐标;
int start y -开始滑动的y坐标 ;
int end x -结束点x坐标;
int end y -结束点y坐标;
duration 滑动时间(默认5毫秒)。
# 导入webdriver控件
from appium import webdriver
# 这里可以get屏幕的长和宽进行百分比控制
_width, _height = self._driver.get_window_size()['width'], self._driver.get_window_size()['height']
# 来进行向上向下向左向右的滑动。
# self 在没有定义类时可不用书写
driver.swipe(_width* 0.5, _height * 0.5, _w * 0.5, _h * 0.7, 1000)
sleep()方法语法:上一步完成后,当前等待时间,默认单位0.2s
注:在自动化测试时,包括截屏,定位元素,点击元素的前后,如果经常系统提示找不到控件可使用该方法,来增加代码的通过率。
t = 1
time.sleep(t)
也可写成为time.sleep(t*n)
代码就一句driver.keyevent()括号内填入的是物理按键的数字代号
from appium import webdriver
当然封装成一个可以输出日志方法,并点击按钮的方法
class PrintJournal :
def press_keyevent(self, num):
logging.debug('press keyeven[num:%s]', num)
self._driver.keyevent(num)
pass
再调用此方法
self.PrintJournal.press_keyevent('4')
是用返回
也可直接使用括号里放序号,按键钮
press_keyevent('3') #home
press_keyevent('4') #f返回
使用Appium+Python进行自动化操作,软件的核心为:
通过PythonAppium来自动化控制软件,是十分的简单与方便,可以想象一下自动刷网课,购物聊天,收能量等。
最后感谢Csdn等其他人的文章,如果侵犯,错误请联系作者处理,谢谢。
用心做好每一篇文章
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。