java - 哪个选择器最适合 Appium 测试不同版本的设备?

标签 java android ios web-applications appium

有多种方法可以在页面上查找元素(名称、id、xpath、内容描述、类名)。

对于 API > 18 的设备,id 效果很好,但如果它是 API < 18,则需要将 content-description 添加到元素中。按名称 查找元素看起来也不错,但我的情况并非如此。

我以前从未使用过 xPath,现在看来它是最好的选择。

我正在编写一个使用 Appium 并允许测试人员同时在多个 Android 设备上测试该应用程序的自动化应用程序。因此,我希望有一个最适合所有情况的方法,而不是为每个版本编写不同的测试类/方法。

谢谢

最佳答案

请避免使用 xPath 作为定位器策略。如果应用程序处于 Activity 开发/支持周期,您将不得不一次又一次地修改 xPath。相反,与开发人员一起提出定位器策略并解释它的需求和目的

我附上了 UIAutomator 屏幕截图,其中包含我们按优先顺序遵循的标识符和定位器策略

enter image description here

  1. Resource-id - 大部分时间此元素保持唯一,除非不必要地摆弄。此定位器通常保持唯一

  2. 占位符文本 a.k.a 文本也可以作为定位器策略为您提供很好的服务,但同样应在项目启动期间就此达成一致。很难为来自不同屏幕的相似元素维护(编码)不同的定位器策略

  3. 内容描述

  4. 如果上述所有策略都失败了,类和索引的组合也可以很好地为您服务

我建议尽可能避免使用 Xpath 和坐标定位器策略。最终在App生命周期内未能通过测试

如果应用程序是跨平台的并且您需要有通用的定位器策略,那就完全不同了。例如:- Accessibility id (IOS) 与 Resource-id (Android) 不同

最好将 IOS 平台中的 Accessibility id 映射到上述针对 Android 平台的定位器策略之一。同样,这必须在项目启动期间就正确地达成一致并计划好/插入/达成一致,否则当你在启动时可能会感到沮丧:-)

示例代码来自 github这可能会有一些帮助!

关于java - 哪个选择器最适合 Appium 测试不同版本的设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317958/

相关文章:

java - Oracle和JDBC计算事务期间发生的执行次数及其性能

java - 在调用 getResource() 之前,我是否需要在 getClassLoader() 上处理 null

java - Android 代码中扭曲的 Java 方法需要足够的关注

objective-c - 设备无连接时发出警报

iphone - iOS-OAuth 实现如何创建框架? (简单的)

java - 测试私有(private)变量 - 总是不好的做法?

Java JTextPane + JScrollPane : de/activate automatic scrolling

java - Gradle Sync 无法正常工作

android - 动态创建 Runnable

ios - 为什么我在 Xcode 中的一个文件消失了?