appium原理
appium是一个开源的自动化工具,支持多平台(ios、android原生应用、移动web和混合应用)appium&webdriver其实是一个自动化库(ios 9.3以上的XCUITest和9.3以下的UIAutomation、android 4.3以上的uiautomator和uiautomator2、windows的winappdriver),客户端调用库的内容实现需要自动化操作的内容,发送到服务器端,服务器端解释并发送到设备端。可以使用任意语言编写你的客户端。
1.启动appium。
这里选择手动启动appium,使用默认设置。
如果需要同时启动多台设备测试,可以修改“Advanced”项
2.desired_caps
desired_caps_a = {'platformName': "Android", 'platFormVersion': "9", 'deviceName': "df93a63a", # adb devices 获取 'app': "C:/Users/v_yddchen/Desktop/weixin7010android1580_arm64.apk", 'appPackage': "com.tencent.mm", # (以微信为例)启动应用,adb shell dumpsys window windows|findstr "Current"可以获取当前运行在前台的应用activity 'appActivity': "com.tencent.mm.ui.LauncherUI", 'unicodeKeyboard': True, # 未set_key做准备。 'resetKeyboard': True} device_a = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps_a) # 端口有变动的话,注意更改。这里初始化的数据也可以使用配置文件,后期再完善这里~
3.一些报错
a.oppo reno启动的时候报错:writing to settings requires:android.permission.WRITE_SECURE_SETTINGS
解决办法:在开发者选项里,把“禁止权限监控”关闭掉(据说小米手机把USB调试安全设置打开即可,允许USB调试修改权限或模拟点击)
b.default/noReset/fullRest
default:测试后停止和清除应用数据,不卸载应用。
noreset:不停止应用和清除数据,不卸载应用
fullreset:session启动前,和结束后,停止应用和清除数据,卸载应用。
c.deviceName和udid
deviceName:iPhone Simulator
, iPad Simulator
, iPhone Retina 4-inch
, Android Emulator
, Galaxy S4,github上说在android上这个字段是被忽略的,但是实测如果不填写的话,会报错,deviceName is blank。
deviceName=任意值,不填写udid的话,可以启动连接的真机。
d.app
如果指定appPackage和appActivity功能(请参阅下文),则Android不需要此功能。 UiAutomator2和XCUITest允许在没有app或appPackage的情况下启动会话。与browserName不兼容
4.desired_caps参考链接
https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md