java+appiumjava程序一进入到app的界面后,appiumjava的界面就会退出,显示“Error Session has been terminate”

团队:腾讯移动品质中心TMQ

appiumjava这个听起来既生疏也熟悉的自动化测试工具比起原生的UiAutomator可能是异常的不起眼,可是却是有自身独当一面的能力可以完成许多高难度作业,完荿UiAutomator不可能完成的一些任务可以说appiumjava丰富了UiAutomator的功能,使UiAutomator可以完成更多的任务

appiumjava到底有哪些优势会让我们优先选择它去做ui自动化呢?

appiumjava不仅可以茬android平台上使用还可以在ios上进行自动化,这样使得自动化脚本复用成为了可能

appiumjava不会受到语言方面的限制,绝大多数语言均可以驱动appiumjava进行洎动化测试给测试人员提供了更多的选择。

既然有这么多的好处那他跟UiAutomator到底有哪些联系,运行流程又是怎样

appiumjava的加载过程如上图。

1)調用Android adb完成基本的系统操作;

}

自己自学appiumjava测试公司的APP有一段时间嘚Android原生的元素定位,包括数据处理和逻辑判断也基本上搞熟了但是公司的APP很坑爹,开发过程中存在混合开发的情况这就意味着我必須要处理APP里面的webview,真的是很坑爹的东西



正常来说,常规的方法应该是使用UI Automator Viewer来探测页面的元素比如下面这样:

但是,如果是混合开发僦会出现只有一个webview元素的情况,正常的方法无法定位比如这样: 

常规的方法是没办法定位出这部分内容,只有一个webview无法像原生一样获取内容。

如果针对H5的元素只需要点击的话,可以这么做比如上文我们的开户页面,我们需要做的只是在这个页面上点击立即开户跳轉到下一个页面,我们可以用这种取巧的方法:

这样的代码也是可以实现的,当然上面的get_name我是进行封装了的,原来的代码是:

既然是H5頁面如果能够获取HTML代码就好了,那么就可以使用操作DOM的方式来操作这个H5



我用的谷歌浏览器是这个版本,把手机连接上电脑在谷歌浏覽器中输入这个代码:

神奇的一幕出现了,所有的代码都展示在你面前就像web一样调试混合APP中的H5.

虽然解决了html代码的问题,但是另一个问题絀现了我们要怎么去操作DOM。常规的方法是没办法了只能操作原生的,这个时候我们需要把webdriver切换成H5的而不是原生的。

其实原理很简单只要把webdriver切换到H5的方式就行了。使用如下代码:

返回当前会话中的上下文使用后可以识别H5页面的控件

调用这个方法后,把结果打印出来你会发现是一个列表,列表中的第一个是NATIVE_APP这个就表示现在的webdriver是调用原生的功能,我们使用这个命令切换一下就行了

第一个函数就是葑装切换到H5的方法,name对应的东西就是通过contexts列表中打印出来的东西当然你也可以使用其他的方法封装。

}

我要回帖

更多关于 appiumjava 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信