0
  1. 在新的虚拟设备(Pixel 4,api 版本 30,Android 11)上,我打开 Chrome,然后在欢迎使用 Chrome 屏幕上单击“接受并继续”。
  2. 此时 Chrome in 在“打开同步”屏幕上,屏幕上有一个“不,谢谢”按钮。
  3. 然后我切换到我的mac上的终端并运行 adb shell dumpsys activity top

结果包含以下几行:

org.chromium.chrome.browser.signin.AccountSigninView{1080,0-2160,1977}
  android.widget.LinearLayout{0,1790-1080,1977 #7f0b009c app:id/button_bar}
     org.chromium.ui.widget.ButtonCompat{44,44-299,143 #7f0b02d1 app:id/negative_button}

AccountSigninView坐标1080,0-2160,1977在屏幕之外,但按钮在屏幕上可见。这种行为不会在我的手机上重现。

问题:

  1. 我怎么能理解这个按钮实际上是可见的而不是在屏幕之外?
  2. 如何调整模拟器以使其具有与我的普通手机相同的行为?

更新1:

我尝试运行adb shell uiautomator dump,虽然屏幕边界之外没有控件,但按钮的坐标为零。

<node
  resource-indroid.chrome:id/negative_button"
  ...
  bounds="[0,0][0,0]"/>
4

2 回答 2

1

您可以尝试使用AndroidViewClient/culebrauiautomator或其他可用的后端,也可以对坐标进行一些调整,例如运行

dump --bounds

在类似的情况下(Chrome 已经设置好),给出

...
android.widget.Button com.android.chrome:id/signin_promo_choose_account_button Choose another account ((143, 1900), (937, 2032))
...

所以如果你打算点击按钮,使用 AndroidViewClient 你可以简单地做

vc.findViewWithTextOrRaise(u'Choose another account').touch()
于 2021-11-25T18:34:23.133 回答
1

我不确切知道如何解析 的输出dumpsys acticity top,但 1080 和 2160 是布局的上 y 和下 y 坐标。至于其他 2 个数字 - 我不知道如何解析它们。
如果要获取任何视图的边界,最好使用该uiautomator dump命令。它输出一个 xml 文件,您可以在其中找到屏幕中任何视图的边界。

于 2021-11-25T16:11:02.503 回答