Appium

本文详细介绍了如何使用Appium进行Android自动化测试,包括环境搭建、Appium的Python客户端安装、模拟器或真机的准备、代码操作APP的流程,如安装、卸载应用、定位并操作UI元素、处理弹窗、屏幕截图、滑动操作、H5页面与APP页面的切换以及长按操作等。此外,还提供了启动Appium服务器的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、环境搭建,并验证环境是否搭建成功

Python基础环境搭建【安装Python、安装Pycharm】

装配SDK【安装JDK、配置SDK】

Appium安装【node安装(appium使用node语言开发的)、appium安装(server)、Appium-Python-Client安装及配置】

以上安装完成需要配置环境变量

安装模拟器或者使用真机

使用真机是需要安装:uiautomator2.server、uiautomator2.server.test、Appium Setting、Unlock

二、代码操作app流程

1)导入包:import appium.webdriver.webdriver from WebDriver

2)收集参数:

caps={}

caps['automationName']='UiAutomator2'

caps['platformName']='Android'

caps['platformVersion']='6.0.0'

caps['deviceName']='192.178.119.112:5555'

caps['appPackage']='com.youdao.note'

caps['appActivity']='.activity2.MainActivity t225'

说明:

automationName:测试框架名称,一般为UiAutomator2

platformName :操作系统名称(Android、iOS、FirefoxOS)

platformVersion:操作系统版本(adb shell getprop ro.build.version.release)

deviceName:被测设备名,启动并连接设备/App(先打开app才能获取app信息)后通过adb devices获取

appPackage:包名,被测app或者系统主界面。使用uiautomatorviewer.bat工具(SDK解压路径->tools->运行uiautomatorview.bat)获取被测软件包名,真机可以在应用软件详情页面获取

appActivity:cmd运行"adb shell dumpsys activity activities | findstr mFocusedActivity"获取,获取的是当前捕获页面的activity。例:捕获主界面获得主界面activity,捕获app页面获得app的activity。

3)设置驱动

driver= Webdriver("http://127.0.0.1:4723/wd/hub",caps)

说明:appium服务器搭建在本地都是这个地址,caps是上面收集的参数

4)定位并操作

<1>定位信息获取:先打开被测app,启动uiautomatorviewer工具(SDK解压路径-》tools-》运行uiautomatorview.bat),点击左上角第二个按钮捕获被测页面信息,点击要操作控件右侧显示。开启appium服务器会导致uiautomatorviewer无法捕获被测页面信息。

<2>app安装与删除:

说明:caps中appPackage,appActivity设置主界面信息,

安装:driver.install_app("D:\\app_automation\youdaoyunbiji_84.apk") #参数为包的绝对路径

卸载:driver.remove_app("com.youdao.note") #参数为包名

app状态检查:driver.is_app_installed("com.youdao.note") #参数为包名

<3>弹出框处理

def always_allow(self,driver):

yes_button = (By.ID,'com.android.packageinstaller:id/permission_allow_button')

try:

e=WebDriverWait(driver,3).until(EC.presence_of_element_located(yes_button))

e.click()

except:

pass

<4> 屏幕截取

screenshotname='searchnote'+title+'.png'

driver.get_screenshot_as_file(screenshotname)

<5>滑动:

1>driver.swipe(start_x,start_y,end_x,end_y,duration)

参数:

start_x:起始时横坐标

start_y:起始时纵坐标

end_x:结束时横坐标

end_y:结束时纵坐标

duration:滑动持续时间,单位毫秒,默认None(一般设置500-1000毫秒比较合适)

说明:手机页面坐标从左上角(0,0)开始,右下角结束(x和y坐标最大),屏幕内容从上向下滑动展示时,手的操作其实是从当前屏幕的下方往上方滑动的,”下方“的y坐标(即开始y坐标)大于上方y坐标(即结束的y坐标)。

2>由于不同手机屏幕尺寸不同,一般不使用固定坐标

# 屏幕宽

width = driver.get_window_size()['width']

# 屏幕高

height = driver.get_window_size()['heigth']

# 屏幕从下向上滑动

driver.swipe(width*0.5, height*0.9, width*0.5, height*0.1, 1000)

# 屏幕从上向下滑动

driver.swipe(width*0.5, height*0.1, width*0.5, height*0.9, 1000)

# 屏幕从左向右滑动

driver.swipe(width*0.1, height*0.5, width*0.9, height*0.5, 1000)

# 屏幕从右向左滑动

driver.swipe(width*0.9, height*0.5, width*0.1, height*0.5, 1000)

注意:屏幕内容从上向下滑动展示时,手的操作其实是从当前屏幕的下方往上方滑动的

<6>H5页面与手机app页面切换

前提:需要确认a模拟器/真机使用浏览器内置版本,下载对应驱动(不存在对应版本,下载临近版本试试)放入appium对应的浏览器目录下。

例如谷歌:找到Appium 快捷方式,右键打开文件所在位置,放在如右路径下\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win

1>获取页面所有的上下文:cons = self.driver.contexts

说明:返回结果为list,例如['NATIVE_APP', 'WEBVIEW_com.youdao.note'],其中 'NATIVE_APP' 指的是有道云app的标签,'WEBVIEW_com.youdao.note' 指的是H5页面的标签。

2>切换到H5页面:driver.switch_to.context(cons[1])

说明:切换到H5页面后即可正常定位操作。

3>返回app页面操作

点击退回键:driver.press_keycode('4') # 手机按键对应数值:https://blog.youkuaiyun.com/ezreal_tao/article/details/91355892

切换回手机app模式:driver.switch_to.context(cons[0])

4>确认app中的H5页面

(1)使用appium的检查器对source中class进行查看,是否为 "android.webkit.WebView"

(2)凭经验的话页面上方有关闭按钮等

5>内置浏览器版本确认:

1.然后app已经点击按钮,进入H5页面,等待H5页面加载完成。

2.chrome浏览器地址栏中输入chrome://inspect/#devices

3.等待一会(不会立马出现)出现Remote Target下面获取

<7>长按

from appium.webdriver.common.touch_action import TouchAction # 导入包

element=driver.find_element_by_id("*") # 定位需要长按的元素

TouchAction(driver).long_press(element).perform().wait(3000) # 通过long_press方法实现长按操作,wait(3000)是等待3000ms

driver.find_element_by_id("*").click() # 再次点击停止长按

5)启动appium服务器

“主机”和“端口”不用改,按照默认就行,点击启动服务器

运行代码:

说明:caps中appPackage,appActivity决定要操作对象,设置主界面信息运行到driver= Webdriver("http://127.0.0.1:4723/wd/hub",caps)时停留在主界面,设置app信息则会打开app,进入到app首页,后面直接定位操作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值