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

   日期:2020-05-21     浏览:194    评论:0    
核心提示:一、Appium环境安装和架构介绍二、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
注意:启动页与直接启动主页是不同的。 理论上任何一个页面都可以直接进去,但开发做了限制,不允许这么操作。只能从启动页开始,模拟真实用户使用场景。






待更新…

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服