【问题标题】:uiautomator click on a ImageButton with no text or content-descuiautomator 单击没有文本或内容描述的 ImageButton
【发布时间】:2013-12-18 00:58:14
【问题描述】:

在 4.2.2 模拟器上,在 Music 的 Now Playing 屏幕中,我们有 prev、play 和 next ImageButtons。不幸的是,这 3 个按钮没有 text 或 contet-desc 值。

我想点击其中一个,我认为答案在于:

  UiObject relLayout = new UiObject(new UiSelector()
  .className("android.widget.LinearLayout").index(1));
  relLayout.click();

但是这个屏幕中有几个LinearLayout,我不知道如何选择一个特定的LinearLayout。上面截取的代码将按随机播放,因为它也是一个包含 3 个图像按钮(库、随机播放和重复)的线性布局。

我们对 LinearLayout 的唯一了解是它是另一个 LinearLayout 的子元素,索引为 5,另一个 LinearLayout 是 FrameLayout 的子元素,索引为 0,FrameLayout 是一个 LinearLayout 的子元素,索引为 0是 FrameLayout 的子元素,索引为 0。

问题是我们如何告诉 UiSelector 去寻找某个 LinearLayout?

谢谢,

亚历克斯

【问题讨论】:

    标签: android android-uiautomator


    【解决方案1】:

    在这种情况下,我点击bounds。这可能会导致问题,因为当您更改设备大小时,边界会发生变化。所以我得到了屏幕高度,这样你就知道你使用的是哪个设备,然后点击bounds。你可以通过uiautomatorviewer找到你的bounds

     int height = UiDevice.getInstance().getDisplayHeight();
    
    if(height == THE_SIZE_EXPECTED){
      UiDevice.getInstance().click(int_x, int_y);
     } else if (height == ANOTHER_SCREEN_HEIGHT_OPTION){ 
       UiDevice.getInstance().click(int_x, int_y);
     } 
    

    希望对你有帮助

    【讨论】:

    • 我认为你必须使用UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());初始化UiDevice
    猜你喜欢
    • 2019-04-09
    • 2019-12-13
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 2017-03-20
    相关资源
    最近更新 更多