您的位置:首页 > 移动开发

appium使用过程碰到的问题(一)

2018-03-19 11:01 274 查看
1. UI自动化,涉及到权限(包括不限于:首次打开提醒GPS定位、获取联系人等信息;扫一扫的视频权限,录制的声音权限等)如何处理?

答: iOS:desirede_capabilities 设置 autoAcceptAlerts = true
android: https://testerhome.com/topics/3800 权限问题等,尽量能够在脚本执行前设置完成。


2. 真机如何获取deviceName?

答:单个设备时,通过adb devices来获取devices;
多个设备时,需要指定uuid来识别机器。

以下是python使用正则匹配设备:

```
# 读取设备信息
# os.popen 方法用于从一个命令打开一个管道
readDeviceId = list(os.popen('adb devices').readlines())
# 正则表达式匹配出 id 信息
deviceId = re.findall(r'^\w*\b', readDeviceId[1])[0]
```


3. 真机如何获取页面其他信息?

答:

方法一:通过adb工具命令查看:
```
adb shell
logcat | grep cmp=

I/ActivityManager( 4047): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.smartisanos.notes/.NotesActivit y (has extras)} from uid 10012 on display 0
```

appPackage : com.smartisanos.notes

appActivity : .NotesActivit

方法二:
aapt dump badging +客户端包所在路径+客户端包名称.apk
这个看你有没有aapt.exe,这个很直观,你也可以执行命令时输出成log来看,有apk的推荐这种。反编译查看xml应该用的也是这种方法。

```
C:\Users\lei>D:\develop\Android\android-sdk-windows\build-tools\27.0.3\aapt.exe
dump badging D:\Downloads\Android_SIT_235_44247.apk
package: name='com.zxjt.jjt' versionCode='3' versionName='1.0.2' platformBuildVe
rsionName='7.1.1'
sdkVersion:'16'
maxSdkVersion:'26'
targetSdkVersion:'25'

launchable-activity: name='com.thinkive.android.invest_app.ui.activities.Launche
rActivity'  label='' icon=''
```


4. 什么是aapt, 他的作用是什么?

答:Android Asset Packaging Tool,是Android资源打包工具,SDK目录中自带。它的位置:sdk\build-tools\android-4.3\aapt.exe。如果需要全局使用这个命令,需要把这个路径添加到path变量中,否则就只能在这个目录下使用。

主要作用就是可以查看apk文件中的相关信息,和编译


5. appium控制事件跳转到新的页面,如何处理后续操作?

答:通过识别下一页的元素是否存在,判断是否跳转成功。可以通过try处理。


6. appium的api文档地址

答:appium内部使用的是webdriver,需要熟悉webdriver即selenium API。

可以通过命令启动本地python的帮助文档模式,访问 'http://localhost:4567/' 查看api:

```
C:\Users\lei>python -m pydoc -p 4567
Server ready at http://localhost:4567/ Server commands: rowser, [q]uit
server>
```


[b]7. 真机使用appium-desktop时,总是提示安装appium settings与Unlock


答:修改appium的本地js文件。进入安装目录C:\Users\lei\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\lib
- 找到android-helpers.js


8. APP每次打开都清除了用户数据,出现首次弹框提醒

答:增加设置:desired_caps['noReset'] = True


9. appium安装app报错:Failure [INSTALL_FAILED_UNKNOWN_SOURCES] at Object.wrappedLogger.errorAndThrow

答:需要开启手机权限。安全中心》高级设置》应用程序安装来源管理》未知来源(勾上)


10. 通过传入apk路径,自动安装app并执行appium。如何设置易安装后不再次安装?

答:我们通过代码传入参数,让noReset设置True。注意,这里没有再次执行安装,所以,是根据appPackage和appActivity两个参数来定位手机中的应用,找到后并打开这个应用。

```
desired_caps['noReset'] = True
```


11. demo脚本,通过find_element_by_name定位元素,在appium server执行成功,在appium desktop执行失败,报错元素定位不存在。

答:appium在一定版本后,find_element_by_name函数已经失效不用,需要修改为find_element_by_android_uiautomator函数。


12. demo脚本,在锤子手机执行成功,在小米手机执行失败。报错场景:启动页滑动脚本报错selenium.common.exceptions.WebdriverException:Message:An unknown server-side error occurred while processing the command。

答:启动页加载时间过长,滑动操作执行时没有找到页面元素,需要增加等待时间。


98a8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: