Appium的介绍和使用(超详细版,持续更新中)

前言:目前很多公司都在做APP,对于APP测试来说,我个人认为痛点在于版本迭代快,机型多,回归测试需要耗费大量的人力、时间成本,那我们该怎么做呢?这时候就要引入APP自动化了,它可以帮助我们有效的进行回归测试!
一、Appium环境安装和架构介绍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二、appium用例录制
官方文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在电脑上通过 adb 和 IP 地址连接 Android 设备
adb connect 127.0.0.1:7555
在这里插入图片描述
adb logcat |grep -i displayed 获取当前的操作日志
在这里插入图片描述

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time

desire_cap = {
    "platformName": "android",
    "deviceName": "127.0.0.1:7555",
    "appPackage": "com.xueqiu.android",
    "appActivity": ".view.WelcomeActivityAlias",
    "noReset": True,  # 跳过弹窗,手动关闭弹窗后后续操作将自动跳过
    "dontStopAppOnReset": True  # 设置为不停止APP
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desire_cap)

driver.implicitly_wait(10)
element1 = driver.find_element_by_id("com.xueqiu.android:id/tv_search").click()
element2 = driver.find_element_by_id("com.xueqiu.android:id/search_input_text").send_keys("Alibaba")
time.sleep(5)
windows_rect = driver.get_window_rect()
width = windows_rect["width"]
height = windows_rect["height"]
print(width, height)
TouchAction(driver).tap(x=175, y=220).perform()
time.sleep(5)
TouchAction(driver).tap(x=270, y=692).perform()
time.sleep(5)
driver.back()
time.sleep(5)
TouchAction(driver).tap(x=325, y=1223).perform()
time.sleep(5)
driver.back()
time.sleep(5)
TouchAction(driver).tap(x=206, y=197).perform()
time.sleep(5)
TouchAction(driver).tap(x=247, y=1243).perform()
time.sleep(5)
element3 = driver.find_element_by_id("com.xueqiu.android:id/tv_login_by_phone_or_others")
element3.is_enabled()
print(element3.text)
print(element3.size)

每一个操作步骤添加等待时间是为了让大家看的更加清楚操作步骤哈

三、元素定位方法与隐式等待
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
driver.implicitly_wait(10) 隐式等待,作用于全局
在这里插入图片描述
在这里插入图片描述
四、App控件定位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
控件基础知识
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
五、APP控件交互
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
六、触屏操作自动化
在这里插入图片描述
在这里插入图片描述
七、高级定位技巧
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
八、显式等待机制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

locator = (MobileBy.ID, "com.xueqiu.android:id/tv_login_by_phone_or_others")
WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable(locator))   #显式等待判断
element = WebDriverWait(driver, 10).until(lambda x: x.find_element(*locator))   #显示等待用lambda表达式判断

九、特殊控件Toast识别
在这里插入图片描述
在这里插入图片描述
十、属性获取与断言
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
pip install pyhamcrest pip安装
十一、appium参数化用例
直接用pytest.mark.parmetrize装饰器或者yaml文件读取
在这里插入图片描述
十二、数据驱动
利用外部数据
在这里插入图片描述
使用yaml
在这里插入图片描述
十三、Android Webview测试
在这里插入图片描述
在这里插入图片描述
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/web/chromedriver.md
https://npm.taobao.org/mirrors/chromedriver/
adb shell pm list package 查看手机上所有的包名
adb shell pm list package|grep browser 查看浏览器的包名
adb shell pm dump com.android.browser|grep version 查看浏览器版本
chrome://inspect/#devices 调试H5工具,需要翻墙才能访问
点击inspect
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
driver.switch_to.context(driver.switch_to.context[-1])
driver.switch_to.window(driver.window_handles[-1])
对于混合APP来说,有一个上下文概念,从原生进入WEB需要切换上下文,就像pc切换句柄一样,这是一个简单的切换,详细情况可以百度
在这里插入图片描述
十四、微信小程序测试
待更新
十五、实战演练
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Android 开发环境与SDK
Appium Server 包括两种形态:

Appium Desktop :包括Appium Server ,Appium Inspector
Appium Server :直接就是一个server ,命令行启动 直接输入appium 回车
测试iOS 系统:必须的环境
PC: MacOS,Xcode ,libimobiledevice ,ideviceinstaller,
手机安装:WDA facebook (webdriver agent)

测试设备
真机
模拟器
mumu 6.0 (推荐)
Genimotion
- 可以模拟不同手机尺寸,不同版本的手机设备
emulator
- android sdk自带的emulator ,使用Android Studio 创建
- emulator 启动方法:
emulator  -list-avds   列出有哪些模拟器
emulator @Pixel_3a_XL_API_23_x86-6-0   启动模拟器
测试设备需要设置:
真机或者模拟器都需要打开的:
打开开发者选项, 连点版本号七下,返回 设置页
开发者选项 - USB调试模式

模拟器连接:
adb connect

真机 需要安装驱动:
windows系统: 安装驱动 ,豌豆夹或者手机助手。
Mac Linux 不需要安装

App 文件
下载安装
三种方式:

去应用商店或者app store下载安装
去网上下载(比如应用宝等平台),然后拖拽到手机上
将下载下来的应用,使用命令安装:
adb install **.apk
卸载
卸载方式:

直接在模拟器上卸载,长按应用,拖拽删除
使用命令卸载:
adb uninstall  apk的包名
例如企业微信:
adb uninstall com.tencent.wework
Appium Desktop
点击 Start Server 启动服务
配置DesireCapability

{
  "platformName": "android",
  "deviceName": "emulator-5554",
  "appPackage": "com.tencent.wework",
  "appActivity": ".launch.LaunchSplashActivity",
  "autoGrantPermissions": "true",  #这个参数为true的时候 noReset参数不生效
  "noReset": "true"  #noReset 防止清除app的数据
}
adb 常用命令
adb devices
adb logcat | grep -i Displayed
adb shell am start -n 启动 activity
com.tencent.wework/.launch.LaunchSplashActivity
com.tencent.wework/.launch.WwMainActivity
注意:启动页与直接启动主页是不同的。 理论上任何一个页面都可以直接进去,但开发做了限制,不允许这么操作。只能从启动页开始,模拟真实用户使用场景。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
待更新…

猜你喜欢

转载自blog.csdn.net/weixin_44275820/article/details/105566379
今日推荐