Appium appium 元素定位变动的问题

beck · July 09, 2019 · Last by beck replied at July 09, 2019 · 598 hits

问题

公司做UI自动化用了python+appium那一套,但发现每打一个包,安卓app的元素定位都会变动,这样还要用uiautomatiorviewer去一个个查看元素定位,感觉很浪费时间,有没有办法将元素定位固定下来?

补充

元素定位以id, class, xpath居多,其他的略少

最佳回复
beck 回复

首先纠正一下,uiautomatorviewer它不生成任何东西,它只是查看控件树的工具,生成是UIAutomator来做的。两者是技术与工具的关系,不要搞混了。

回到主题,通常UIAutomator在固定手机上的识别效果是固定的,如果说内容变了,那只能说,开发把控件相关的信息改了。
以我app三年的开发经验来说,只有内容不断变化的ui部分是需要不断修改内容的,而这种ui业务不适合做ui自动化,因为业务更新太快,ui自动化脚本输出可能都会跟不上,或者说跟上了,也只能用一次,下次就没法用了。

应该针对不频繁变化的ui做ui自动化,ui自动化的目标不是发现bug,而是做回归,确保以往经过检验的功能没有问题,让自己安心。

我的建议是

  1. 跟开发建议开发不要经常变动id,如果有大量更新,及时通知
  2. 只针对少变化的页面做自动化ui测试

如果是webview h5一类的页面,那就不使用UIAutomator,用espresso来做定位,此时UIAutomatorViewer就没用了,你得有个新工具来看控件的相关信息。

共收到 6 条回复 时间 点赞

为什么会变动

beck #2 · July 09, 2019 作者
cmlanche 回复

不知道呢,每出一个版本的安卓包,元素定位都会变一次,维护起来很痛苦

beck 回复

你得确认原因才有对应措施呀

beck #4 · July 09, 2019 作者
cmlanche 回复

之前问了开发,说元素定位是uiautomatorviewer自动生成的

beck 回复

首先纠正一下,uiautomatorviewer它不生成任何东西,它只是查看控件树的工具,生成是UIAutomator来做的。两者是技术与工具的关系,不要搞混了。

回到主题,通常UIAutomator在固定手机上的识别效果是固定的,如果说内容变了,那只能说,开发把控件相关的信息改了。
以我app三年的开发经验来说,只有内容不断变化的ui部分是需要不断修改内容的,而这种ui业务不适合做ui自动化,因为业务更新太快,ui自动化脚本输出可能都会跟不上,或者说跟上了,也只能用一次,下次就没法用了。

应该针对不频繁变化的ui做ui自动化,ui自动化的目标不是发现bug,而是做回归,确保以往经过检验的功能没有问题,让自己安心。

我的建议是

  1. 跟开发建议开发不要经常变动id,如果有大量更新,及时通知
  2. 只针对少变化的页面做自动化ui测试

如果是webview h5一类的页面,那就不使用UIAutomator,用espresso来做定位,此时UIAutomatorViewer就没用了,你得有个新工具来看控件的相关信息。

beck #6 · July 09, 2019 作者
cmlanche 回复

多谢建议。一直对这个有疑问,经过你的解答,感觉有点方向了。下午和开发再讨论一下,看能不能他们将常用的固定下,之前我们的定位几乎99%都会变(即使是固定的页面也会变),维护起来太麻烦了

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up