iOS自动化实践——WebDriverAgent(五)
这两天开始真正开始根据用例写自动化测试脚本,但是遇到了一个问题,特别是当遇到inspector展示的页面控件元素为:
总是发现使用,自己封装的find_name(text=name,className=classname)
找不到控件,为解决这个问题,我感觉自己走了个乌龙,但是我还是记述一下,当做对自己的警醒吧。
现象是:当控件元素为isVisible=NO时候,无法定位?
思路一:使用类似于appium中的TouchAction实现。
1、因为在appium使用过程中,同样的控件,使用driver.find_name('run_history_arrow').click()
是没有效果的,当时是使用类似于TouchAction(driver).press(driver.find_name('run_history_arrow')).perform()
实现,因而第一思路是通过方法touch action
实现。
可是WDA
内又没有这样的api,该怎么办呢?
想到macaca
封装的是WDA
,去参考一下macaca
是怎么实现的就可以了。
由于之前配置过macaca
的环境,具体环境配置可见macaca官方链接。
调出macaca
的执行用例:
发现怎么都执行不成功,也无法查看发起的请求是什么?后来联系了达峰,他告诉我,服务端暂时未实现touch action
的功能,只能通过在macaca
内的代码里大致看到请求格式为:
2、既然macaca
走不通,就去查看appium的源码,因为appium
也封装了touch action
,我知道appium
是完全可执行成功的。
在appium
内_request
打断点,print request
等等,终于可以捞出了完全的请求格式:
可是奇怪的是,仍然没有起到任何效果,而且获取的返回值status=1
显然是一个错误的请求。
思路二:观察inspector展示的isVisible=NO
,思考是否跟此有关?
1、看到isVisible=NO
的都无法定位,但是只要是isVisible=YES
的却都可以点击触发。
所以尝试通过xcode
更改isVisible=NO
的属性,查看了大量的链接和咨询了开发,无法给出定论说如何更改此属性,我显示有点儿灰心。。。。
2、尝试通过自己发起请求来定位此控件,发现竟然有返回值:
这个时候才注意到,label值为空,突然联想到之前封装的client
端有一句代码是:
我立马恍然,原来是自己走了弯路,封装错了。
解决方法
其实很简单,只是注销这一句
程序可以执行成功。
好吧,我浪费了将近两天的时间,功能自动化测试继续。。。。