1,autoWebview:#autoWebviewTimeout可以给webview定一个超时时间
#直接切到webview上下文(context)在一些文档中基本都是类似的解释,
在学习selenium的前提下你可能真的不知道##appium是由selenium封装而来的。
webview就相当于web页面上的一个frame表单,不仅仅如此。
在appium当中可以由driver.content打印上下文究竟是原生页面还是webview,
会打印这两个东西:NATIVE_APP:这个就是native,也就是原生的
WEBVIEW_com.xxxx :这个就是webview
相当于这个webview是嵌原生native界面上的一个frame表单
如果要想frame一样操纵句柄(handle):
switch_to.context(参数是webview的context)#产生一个当前句柄的list
跳入表单的两种方法:
方法一:driver.switch_to.context("NATIVE_APP") # 这个NATIVE_APP是固定的参数,另一个表单WEBVIEW_...
方法二:driver.switch_to.context(contexts[0]) # 从contexts里取第一个参数,另一个表单取contexts[1]
2,appWaitActivity:
#用于等待启动的 Android Activity 名称
这个还是挺有用的,之前每次使用主active来开启app又可能会在开启的时候模拟器总会出来一个某某app已经停止运行错误,过一段时间自己又开始运行了。
其实在你启动app的时候或有多个active同时出现,只有一个是可以开启app的,
其他的由不同的作用比如渲染启动页等等这个可以通过mintor去查看https://blog.youkuaiyun.com/wc199422/article/details/88549892这边文章例我写到过
解决方案:参考资料
第一种方案是直接在配置中写:
desired_caps = {}
desired_caps["appActivity"] =。。。#当前的Activity,最开始你能看到的
desired_caps["appWaitActivity"]=。。。#主Activity,能启动app的
desired_caps["appWaitDuration"]=20000#为appWaitActivity设置的超时时间,毫秒为单位
当然在允许报错的情况下#我说的那种情况,你可以直接讲appActivity设成你的主Activity
第二种wait_activity():
driver.current_activity#查看当前的activity,还有个参考方案在下面
# 等主页面activity出现,30秒内
driver.wait_activity(".base.ui.MainActivity", 30)#一定要是主activity
#获取appPackage、appActivity
adb shell dumpsys activity|findstr mFocusedActivityraw_input
#获取当前的appPackage和appActivity
adb shell logcat|findstr "Displayed"
3,avd,avdReadyTimeout,avdLaunchTimeout,avdArgs
这个是在win中利用sdk内置得模拟器运行app,一般都是夜神,逍遥,雷电等等之类得运行。所以不便写太多。当然可能会在机器内存上上有一定优势,性能可能弱一些
创建一个avd模拟器得资料
刚刚想起appium得内存问题查了查还真有:#由于最近appium项目没有做了,这两个没有测,但如果你在做这个真的很有帮助,当然如果能解决模拟器好几个g得内存占用或许对项目得帮助更大。请各位大哥指点
appium内存溢出得问题解决
appium app内存监控