标签: android-uiautomator

无法解析符号'AndroidJUnit4'

显然我需要正确的导入语句来解决这个问题.根据文档AndroidJUnit4,这应该是

import android.support.test.runner.AndroidJUnit4;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,Android Studio突出显示runner为红色并抱怨"无法解析符号'跑步者'".

背景

我遵循Android开发者网站上的教程,使用UI Automator设置测试,从而达到了这一点.我遇到的第一个问题是,com.android.support:support-v4:22.2.0com.android.support.test:runner:0.2依赖于不同的版本com.android.support:support-annotations.我按照Android漏洞报告的建议,allprojects在我的项目中添加了以下内容build.gradle:

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
Run Code Online (Sandbox Code Playgroud)

这解决了即时错误,但我怀疑它导致了我当前的问题.有没有人有任何关于如何解决这个问题的建议?

从`./gradlew:app:dependencies中重新发布部分

androidTestCompile - Classpath for compiling the androidTest sources.
+--- com.jayway.android.robotium:robotium-solo:5.2.1
+--- com.squareup:fest-android:1.0.8
|    \--- org.easytesting:fest-assert-core:2.0M10
|         \--- org.easytesting:fest-util:1.2.5
+--- com.android.support.test:runner:0.2
|    +--- junit:junit-dep:4.10
|    |    \--- org.hamcrest:hamcrest-core:1.1
|    +--- com.android.support.test:exposed-instrumentation-api-publish:0.2
|    \--- com.android.support:support-annotations:22.0.0 -> 22.2.0
+--- com.android.support.test:rules:0.2
|    \--- com.android.support.test:runner:0.2 (*)
\--- com.android.support.test.uiautomator:uiautomator-v18:2.1.0

compile - Classpath …
Run Code Online (Sandbox Code Playgroud)

android gradle build.gradle android-uiautomator testing-support-library

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

Android测试:UIAutomator vs Espresso

我正在寻求适用于Android的UI自动化测试框架,我偶然发现了UI AutomatorEspresso,这是我感到困惑的部分-

  1. 两者都由谷歌维护
  2. 两者都用于功能UI测试
  3. 两者都Android只是框架

所以我的疑问/怀疑是 -

  • UI Automator和之间的主要区别是Espresso什么?
  • 是否必须修改源代码以集成任何这些框架?
  • 一个框架是否比另一个框架具有任何优势?如果是,那么哪个框架最适合Android应用的UI自动化?

android android-espresso android-uiautomator

57
推荐指数
5
解决办法
2万
查看次数

为testAndroid设置不同的minSdkVersion而不是主应用程序

是否可以minSdkVersion为测试设置不同于应用程序本身?我问,因为我想使用新的测试支持库和UI Automator进行测试.但是,这仅适用于API 18+.与此同时,我仍然希望支持旧版Android,尽管没有经过全面测试.build.gradle为了做到这一点,我需要添加到我的文件中?

为了澄清,我使用Android Studio和"新的"基于Gradle的项目结构.

testing android android-uiautomator

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

有没有办法通过adb获取当前活动的布局和视图?

出于环境原因,我只能使用adb命令.

有没有一种方法来获得当前的布局属性,如id,position,text

uiautomatorviewer显示的相似.

android adb android-view android-uiautomator

25
推荐指数
4
解决办法
2万
查看次数

ant build:无法找到tools.jar.预计在C:\ Program Files\Java\jre7\lib\tools.jar中找到它

我知道这个问题很受欢迎,但没有一个解决方案可以帮助我.我用这个,这个,这个这个解决方案,但没有一个人帮我.

我想实现uiautomator测试,需要用ant构建我的build.xml,但是得到这个奇怪的错误.

我使用Windows 8.1

我的JAVA_HOME系统变量设置为c:\ programs files\java\jdk1.7.0_51和c:\ programs files(x86)\ java\jdk1.7.0_51

我的PATH系统变量也设置为%JAVA_HOME%/ bin,我的%ANT_HOME%设置为c:\ apache-ant.

但是当我在android app中执行ant build时,我得到了

unable to locate tools.jar. Expected find it in C:\Program Files\Java\jre7\lib\tools.jar
BUILD FAILED
Perhaps JAVA_HOME does not point to the JDK
Run Code Online (Sandbox Code Playgroud)

但我的JAVA_HOME指向JDK!我对此感到困惑.我也多次重建我的版本,我也一样.

如果有人帮助我会很高兴.

ant android build.xml ui-automation android-uiautomator

23
推荐指数
3
解决办法
5万
查看次数

Android - Independent Fragment UI测试工具

我一直在寻找一种方法来分别测试我的碎片的UI(即独立于其他碎片和活动),但我找不到办法.

特别是,假设我有片段A,片段B和片段C.进入片段C的唯一方法(应用方式)是首先通过片段A和片段B. 我正在寻找一种直接测试Fragment C的方法(可能通过模拟它的依赖关系,如果存在的话),而不必通过Fragment A和B.

到目前为止我调查的工具:

  • monkey:仅用于通过命令行生成伪随机事件.不是我想要的.

  • monkeyrunner:它可以运行Python程序将事件流发送到我的Android应用程序,但它不能直接使用这些脚本定位特定的Fragment.

  • Espresso:白盒测试工具.这接近我想要的,但它仍然需要在到达片段C之前通过片段A和B(即,您需要启动您的应用程序,然后测试将从那里运行).

  • UI Automator:黑盒测试工具.这也很接近,但同样,它需要在测试我想要的之前通过先前的片段(片段C).

有没有办法直接测试Fragmen的UI

android android-testing android-espresso android-uiautomator

19
推荐指数
1
解决办法
7124
查看次数

使用minSdkVersion 9的项目中的UI Automator

我尝试使用minSdkVersion 9在我的项目中使用UI Automator,当然它不起作用,因为它针对API 18.

所以Android Studio会抛出这个错误:

Error:(5, 5) uses-sdk:minSdkVersion 9 cannot be smaller than version 18 declared in library ~/app/build/intermediates/exploded-aar/com.android.support.test.uiautomator/uiautomator-v18/2.1.1/AndroidManifest.xml

Suggestion: use tools:overrideLibrary="android.support.test.uiautomator.v18" to force usage

Error:Execution failed for task ':app:processDebugAndroidTestManifest'.
> java.lang.RuntimeException: Manifest merger failed : uses-sdk:minSdkVersion 9 cannot be smaller than version 18 declared in library ~/app/build/intermediates/exploded-aar/com.android.support.test.uiautomator/uiautomator-v18/2.1.1/AndroidManifest.xml

    Suggestion: use tools:overrideLibrary="android.support.test.uiautomator.v18" to force usage
Run Code Online (Sandbox Code Playgroud)

我添加了我的Manifest标签,<uses-sdk tools:overrideLibrary="android.support.test.uiautomator.v18" />但错误一直显示,我做错了什么?

testing android android-manifest android-uiautomator

18
推荐指数
2
解决办法
3117
查看次数

使用UIAutomatorviewer在Appium中测试Android应用程序时出错

我必须自动化Android应用程序,我通过Appium做同样的事情.我面临的问题是在启动Appium服务器后,应用程序将安装在模拟器4.4.2中,并检查我正在使用UIAutomatorviewer的元素,它默认使用SDK.但在检查应用程序的元素时,我收到错误![在此处输入图像描述] [1]

Error obtaining UI hierarchy
Reason:Error while obtaining UI hierarchy XML file.com.android.ddmlb.SynchException.Remote object doesn't exist.
Run Code Online (Sandbox Code Playgroud)

我试图找到解决方案,以便我可以检查元素,以便我可以编写脚本,但是徒劳无功.

  1. 有人可以告诉我如何解决问题,以便我可以检查元素?
  2. 除了使用UIAutomator查看器之外,还有其他方法可以检查应用程序中的元素吗?

appium android-uiautomator

16
推荐指数
4
解决办法
4万
查看次数

如何使用uiautomator获取视图的父级?

我正在尝试识别ui元素的父视图,以便我可以自由地浏览UI.

例如,在"设置"应用中,我可以找到带有"蓝牙"文本的视图:

UiObject btView = new UiObject(new UiSelector().text("Bluetooth"));
Run Code Online (Sandbox Code Playgroud)

现在,我遇到困难的部分是这样的:我想要导航两个级别并开始新的搜索开启/关闭按钮,启用和禁用蓝牙.

注意:如果我使用下面的代码,我可以获得按钮.

UiObject btButtonView = new UiObject(new UiSelector().className("android.widget.Switch").instance(1));
Run Code Online (Sandbox Code Playgroud)

这将搜索切换按钮并返回第二次遭遇.我希望搜索更精确,并在包含"蓝牙"文本的线性布局中查找按钮.

更新:这是设置应用程序的布局(我需要的蓝牙部分):

LinearLayout
    LinearLayout
        ImageView
    RelativeLayout
        TextView (with text = "Bluetooth")
    Switch ()
Run Code Online (Sandbox Code Playgroud)

android android-uiautomator

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

如何使用浓缩咖啡按下AlertDialog按钮

我想使用Espresso按下面按钮,但我不确定如何.我应该获得资源ID吗?或者如何设置AlertDialog的ID?

在此输入图像描述

@RunWith(AndroidJUnit4.class)
public class ApplicationTest {

@Rule
public ActivityTestRule<LoadingActivity> mActivityRule =
        new ActivityTestRule<>(LoadingActivity.class);

@Test
public void loginClickMarker() {
//Doesn't work:
    onView(withText("GA NAAR INSTELLINGEN")).perform(click());
}
}

public class PopupDialog {

public static void showGPSIsDisabled(Context context, String msg, final PopupDialogCallback popupDialogCallback) {
    new AlertDialog.Builder(context)
            .setTitle(context.getString(R.string.location_turned_off))
            .setMessage(msg)
            .setPositiveButton(context.getString(R.string.go_to_settings), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    popupDialogCallback.hasClicked();
                }
            }).show();
}
}
Run Code Online (Sandbox Code Playgroud)

android.support.test.espresso.NoMatchingViewException:找不到层次结构中的视图匹配:with text:is"GA NAAR INSTELLINGEN"

android android-studio android-espresso android-uiautomator

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