向线性布局发送值

Send value to the linear layout

我是 Appium 和一般自动化的新手。

我正在尝试编写登录测试。我有六个单独的 LinearLayout 元素,我需要在每个元素中插入值“1”。我可以识别元素(例如,id 为 "container_zero" 的元素),但我无法使用 sendKeys()setValue() 方法将值发送给它。

此外,我尝试使用下面的键盘键入所需的数字(参见屏幕截图)。但由于这是应用程序的自定义键盘(不是本机 Android 键盘),我无法与之交互。我尝试了使用 AndroidKey.NUMPAD_0AndroidKey.DIGIT_0 参数的方法 driver.pressKey(new KeyEvent()) - 没有用。键盘内部有 none 个元素,我可以在上面单击(它只是带有 android.view.View class 的单个元素)。

我也有使用坐标 (X,Y) 在自定义键盘上按下所需数字的想法,但我认为这不是一个好办法(也许当我在不同的平台上启动测试时设备,坐标会有所不同 - 如果我错了请纠正我)。

请指教我该怎么办?我当时考虑过使用 Espresso,但我们在 iOS 上有相同的应用程序,所以现在我想我会尝试使用 Appium 一段时间,因为它具有跨平台功能。

但我无法使用 sendKeys() 或 setValue() 方法将值发送给它。 - 是的,您可以看到元素的属性和它不是 checkableclickablefocusable 等。所以这意味着您无法 sendKeys() 甚至 click()

此外,我尝试使用下面的键盘键入所需的数字(参见屏幕截图)... - 这是正确的行为(与您的特定示例相关)同样,因为按钮没有不同的元素,整个键盘只有一个 FrameLayout

我看到两种情况:

  1. 您可以要求开发人员启用按钮元素,这样您就可以click()在上面

  2. 您可以根据屏幕尺寸计算这些按钮的坐标,例如:1个按钮=getWindowSize().getWidth() + 50, getWindowSize().getHeight() / 2;

由于设备不同,这种情况非常不稳定,但如果您发现维度和按钮位置之间的正确依赖关系,它可能会起作用。

总而言之,您要么需要开发人员干预,要么就不太容易计算坐标。