标签: android-uiautomator

Appium - 如何使用 UiAutomator2 和 WebdriverIO 以及 React Native (Android) 和 JavaScript 向下滚动

无论我如何尝试,我都无法让我的 React Native (Android) 应用程序使用 Appium 向下滚动。

我正在使用 UiAutomator2 和 WebdriverIO。

我的代码如下所示:

scrollUntilDisplayed(element: WebdriverIO.Element) {
    const dimensions = driver.getWindowSize();
    touchScroll(10, 100);
}
Run Code Online (Sandbox Code Playgroud)

touchScroll我尝试了以下调用来代替:

  • driver.touchScroll(offsetX, offsetY)- 抛出错误 ( invalid argument: java.lang.IllegalArgumentException: ScrollToModel: The mandatory field 'params' is not present in JSON)
  • driver.touchScroll(offsetX, offsetY, element)- 抛出错误 ( invalid argument: java.lang.IllegalArgumentException: ScrollToModel: The mandatory field 'params' is not present in JSON)
  • browser.execute("mobile: scroll", {direction: 'down'});- 抛出错误 ( unknown error: An unknown server-side error occurred while processing the …

javascript appium webdriver-io android-uiautomator react-native

7
推荐指数
1
解决办法
1万
查看次数

如何使用uiautomator自动解锁真实手机上的模式?

我最近开始学习uiautomator各种Android设备的UI测试.目前我正在测试Galaxy S4.

我正在寻找可用于自动解锁用户绘制解锁手机的解锁模式的任何类或方法.例如,我将信N作为"绘图模式"来解锁手机.如何自动解锁此模式uiautomator

automation android ui-automation android-uiautomator

6
推荐指数
1
解决办法
5010
查看次数

任何更快的转储UI层次结构的方法?

现在我正在使用uiautomator像这样转储UI:

adb shell uiautomator dump
Run Code Online (Sandbox Code Playgroud)

它工作正常,但执行它需要大约3秒钟.所以我想知道是否有更快的方法呢?就像创建一个转储UI的服务一样,还是需要一段时间?

android android-ui android-layout android-uiautomator

6
推荐指数
1
解决办法
6878
查看次数

uiautomator - 无法让ListView滚动,因为我在每个列表项中验证文本.当我点击屏幕上的最后一项时,它就失败了

我正在尝试验证ListView中每个列表项中的文本并逐个向下滚动,以便我可以验证每个...但由于某种原因,我无法让它继续滚动列表验证每个元素.有没有人有任何运气自动化这种行动.这是我最接近的.如果这还不够,请告诉我:

     UiScrollable scrollableList = new UiScrollable(new UiSelector()
        .resourceId("com.example.app:id/listView")
                .className(android.widget.ListView.class.getName())
                .index(3));

for ( i = 0; i < 100; i++ ) {
    UiObject listItem = scrollableList.getChildByText(new UiSelector()
        .className("android.widget.RelativeLayout")
        .instance(i), "Text Title");

    UiObject textBody = listItem.getFromParent(new UiSelector()
        .resourceId("com.example.app:id/textBody"));

    System.out.println("Validating: " + textBody.getText());
Run Code Online (Sandbox Code Playgroud)

当时屏幕上只能看到5个listItem,因此当它尝试到达6时它会失败,因为它不能:

一个. 它不会尝试向前滚动以获得列表中的下一个
b. 即使它确实向前滚动以获得列表中的下一个,实例值将减少到5,而不是增加到6.

我在没有.instance()方法的情况下尝试过它,但在这种情况下,它只是反复遍历列表中的第一个项目而不进行到项目2,3,4等.

如果有人遇到过这个问题,我会很乐意反馈.

android android-listview android-uiautomator

6
推荐指数
1
解决办法
1260
查看次数

Android上的UIAutomator低于4.3

是否可以在api <18上使用UIautomator?自动测试的主要目的是回归测试,并且还应测试具有android 4.1,4.2的设备.也许可以使用低于2.0的UIautomator库版本,但我无法找到有关以前版本的任何信息.

android android-uiautomator

6
推荐指数
2
解决办法
2669
查看次数

如何使用 uiautomator 发送 EditorInfo.IME_ACTION_DONE keyevent

我想使用 uiautomatorEditorInfo.IME_ACTION_DONE发送EditText

要测试的代码:

mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
                if (actionId == EditorInfo.IME_ACTION_DONE) {
                //Do something
                }
}
Run Code Online (Sandbox Code Playgroud)

这应该通过发送数字键盘键码进行测试 - 但这与正常的键码不同,如下所示:

   mDevice.pressKeyCode(KEYCODE_ENTER);
Run Code Online (Sandbox Code Playgroud)

所有要确认的关键事件在这里不起作用。如何实现发送数字键盘确认按键事件的位置EditorInfo.IME_ACTION_DONE

android android-testing android-uiautomator

6
推荐指数
0
解决办法
562
查看次数

Uiautomatorviewer 给出错误“SWT 文件夹 '..\lib\Java 安装位置。” 不存在”

我已经安装了Android studio V 3.1.1

我正在尝试从以下位置启动 UIautoamtorviewer.bat 文件

C:\Users\panmishr\AppData\Local\Android\Sdk\tools\bin 
Run Code Online (Sandbox Code Playgroud)

但它总是给我错误

SWT folder '..\framework\location of your Java installation.' does not exist.Please set ANDROID_SWT to point to the folder containing swt.jar for your platform.
Run Code Online (Sandbox Code Playgroud)

下面是我设置的环境变量列表

ANDROID_HOME: C:\Users\panmishr\AppData\Local\Android\Sdk
ANDROID_SWT:C:\Users\panmishr\AppData\Local\Android\Sdk\tools\lib\x86_64
JAVA_HOME :C:\Program Files\Java\jdk1.8.0_171
Run Code Online (Sandbox Code Playgroud)

在路径变量中,我已经包含

C:\Users\panmishr\App;C:\Users\panmishr\AppData\Local\Android\Sdk\tools
C:\Users\panmishr\AppData\Local\Android\Sdk\platform-tools
Run Code Online (Sandbox Code Playgroud)

我的机器是 64 位 Windows 7 。

让我知道,我错过了什么。

android android-studio android-uiautomator

6
推荐指数
1
解决办法
1万
查看次数

UI 自动化转储“被杀”

./adb exec-out uiautomator dump /dev/ttyKilled重复返回输出。顺便说一句,有时它确实会返回 xml 文件。对它有什么补救措施?

android adb ui-automation android-uiautomator

6
推荐指数
1
解决办法
826
查看次数

uiautormator 总是 IllegalStateException:accessibilityservice 已经注册

我在junitTest中使用uiautomator,在“@BeforeClass”我初始化一个UiDevice:“”mUIDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 首先我完成了一个测试,然后我再次开始测试,我得到一个错误:java.lang.IllegalStateException:UiAutomationService android.accessibilityservice.IAccessibilityServiceClient$Stub$Proxy@7478d40alreadyregistered!

@RunWith(AndroidJUnit4.class)
public class DailyInstrumentedTest  {
@BeforeClass
public static void beforeTest(){


    try {
        mUIDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());  //??device??
    }
}
@Test
public void test(){}
}
Run Code Online (Sandbox Code Playgroud)

android accessibility android-uiautomator android-accessibility

6
推荐指数
0
解决办法
1088
查看次数

如何在 Jetpack Compose for Appium 和 UIAutomator 中设置 id(Xpath 问题)

我正在使用 Jetpack Compose 和 Appium 以及 UIAutomator。我想为id可组合项设置唯一的值,而不是显示 Xpath,因为: 不建议使用 XPath 定位器,这可能会导致脆弱的测试。请您的开发团队提供独特的辅助功能定位器

在我的 Composable 下的 Android Studio 中,我添加了:

Row(
  modifier = Modifier.semantics { testTagsAsResourceId = true }
    ...
    ) {
       Text(
         modifier = Modifier.semantics { testTag = "testTag" },
Run Code Online (Sandbox Code Playgroud)

现在在 Appium 中我可以看到resource-id= testTag,但id仍然显示 Xpath。

根据这篇文章,我应该能够将其设置为与使用和某些类id相同 ,但我不明白如何 - 我应该在我的可组合项中添加此注释吗?resource-id@AndroidFindByUiSelector

我在这里读到了一个解决方案,但不幸的是,浓缩咖啡不适合我。

我也尝试使用:

modifier = Modifier.semantics { this.contentDescription = "testTag" },
Run Code Online (Sandbox Code Playgroud)

这实际上改变了 Xpath,但仍然显示上面的警告。

这就是我想要的方式(其中 id 和资源 id 具有相同的值):文章中的图片

xpath kotlin android-studio android-uiautomator appium-android

6
推荐指数
0
解决办法
1773
查看次数