Appium基于安卓的各种FindElement的控件定位方法实践和建议
AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用。
创新互联为企业级客户提高一站式互联网+设计服务,主要包括网站设计制作、做网站、重庆APP开发、微信小程序定制开发、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。
1. findElementByName
1.1 示例
el = driver.findElementByName("Add note"); assertThat(el.getText(),equalTo("Add note"));
1.2 如何获得Name
安卓设备没有找到适合的方法,尝试用Appium Inspector,但是使用了当前最新的“AppiumForWindows-1.2.3.1”没有看到这个属性,且Inspector在Windows下面非常的不稳定,很容易crash。真心期望Appium团队尽快解决这个问题
iOS设备倒可以用Appium Inspector获得(以下图片来自网上)
1.3 建议
个人建议可以尝试先用view显示的文本作为name看是否能拿到该控件,按照我个人的经验一般都是会成功的,所以我很怀疑安卓上面控件的name是否就等于text。如果确实还是不行的话就只好放弃用name了。或者等待Appium后来的稳定的inspector发布后看是否可以获得控件的name。
这个方法在Appium1.0之后其实已经过时而要被findElementByAccessibilityId取代得了,不知道为什么还能调用,猜想是Appium团队想保留一定的兼容性以平滑过度吧。请查看:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md
2. findElementByAndroidUIAutomator
2.1 示例
el = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Add note\")"); assertThat(el.getText(),equalTo("Add note"));
2.2 如何获得UIAutomator参数
UIAutomator获取控件的方式多种多样,都是通过UiSelector对象来去查找,比如使用view的text文本去当前窗口查找控件,这里不做累述,往后会另起一篇文章来描述UIAUtomator获取控件的方式,到时直接套用进来就可以了。
3. findElementByClassName
3.1 示例
el = driver.findElementByClassName("android.widget.TextView"); assertThat(el.getText(),equalTo("Add note"));
3.2 如何获得控件的ClassName
可以使用UIAutomatorViewer工具直接查看
作者 | 自主博客 | 微信 | CSDN |
天地会珠海分舵 | http://techgogogo.com | 服务号:TechGoGoGo 扫描码: | http://myzitong.com/article/gscgcp.html |