从2016年开始,应用宝的主体工程就开始往多进程方向发展,至7.0版本发布时主工程已完成多进程改造,而彼时应用宝的子进程基本不涉及UI,自动化测试框架采用Robotium+UiAutomator2.0的方式,Robotium基于Instrumentation注入主要负责单个APP内的自动化测试,UiAutomator2.0支持跨应用的自动化测试,因此彼时应用宝的多进程改造并没有影响到BVT自动化测试。
应用宝Web多进程后,就暴露了目前业界主流自动化测试框架的不足,Robotium支持Web自动化但仅限于注入单一进程,UiAutomator2.0支持跨进程但却不支持Web自动化,其它的支持Web自动化的框架例如Selendroid、Espresso等等在原理上均与Robotium相类似(采用Instrumentation注入执行JS提取Web元素),因此也不支持跨进程的Web自动化。
本文介绍一种在Web多进程情况下支持Web自动化测试的方案。介绍当前Web自动化的简要原理、Web多进程后的问题、相应的解决方案及使用方法。
一、Android端Web自动化原理简介
Android端支持Web自动化的测试框架如Robotium、Selendroid、Espresso等等在原理上基本类似,都是采用Instrumentation注入被测app后,执行js脚本,提取并封装成拥有Web元素的文本信息、id或class等属性、坐标信息等等的WebElement对象。
首先,进入Chrome的MobileEmulation模式,访问例如应用宝中视频TAB的H5页面。
然后,进入Chrome的js控制台:Ct