尝试自动执行Android应用测试。但是,元素没有附加任何ID,只有xpaths
。这些xpaths
是动态的,可以根据屏幕尺寸和元素在屏幕上的位置进行更改。
我尝试使用contains()函数,但是在某些情况下没有通用的提名人。这似乎也不是最可靠的方法。
示例:
/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android。 support.v4.widget.DrawerLayout / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2] /android.view.ViewGroup/android.widget.ScrollView/android.view .ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2] /android.view.ViewGroup/android.view.ViewGroup [4]
更改为
/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.view.ViewGroup/android。 support.v4.widget.DrawerLayout / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2] /android.view.ViewGroup/android.widget.ScrollView/android.view .ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup / android.view.ViewGroup [2]
在屏幕上向下滚动时。
什么是最好,最可靠的解决方案?相同的测试脚本应在具有不同屏幕尺寸的多个设备上运行。
甚至建议在Appium中使用xpaths,还是应该去开发商那里为每个元素要求唯一的ID?
答案 0 :(得分:0)
不建议使用xpath。您必须要求开发人员为要与之交互的每个元素放置唯一的ID。
推荐的使用方式
如果您要使用 findElementByAccessibilityId(),则可以要求开发人员在元素中放置唯一的 cont-desc 。
MobileElemet element = driver.findElementByAccessibilityId("your cont-desc id")
,或者如果您想使用 findElementById(),也可以要求开发人员在元素中添加唯一的 id 。
MobileElemet element = driver.findElementById("element's id")
您可以使用 Appium Desktop Inspector 或 uiautomatorviewer 来验证app元素是否包含 id 或 cont-desc >