我开始使用espresso并编写了一些简单的UI测试,用于点击按钮,输入文本并检查是否一切都在那里.现在我想截取屏幕截图并测试一些像素值,但我找不到办法做到这一点.有人有什么建议吗?甚至可以用浓缩咖啡吗?
我正在为基于Espresso的Android应用编写一些测试.单击TextView内部的链接(使用Linkify类创建)后,我需要断言我看到了正确的屏幕.
我尝试在包含链接的TextView上单击,但链接将无法打开.
有没有一种正确的方法来使用Espresso进行测试(除了修改代码以便为链接使用单独的TextView)?
我有ListView图片和文字.当我尝试点击项目时,我收到错误
android.support.test.espresso.AmbiguousViewMatcherException: 'with id: com.cifrasoft.telefm:id/cardsGridView' matches multiple views in the hierarchy.
Problem views are marked with '****MATCHES****' below.
Run Code Online (Sandbox Code Playgroud)
我使用以下代码:
onData(hasToString(startsWith("Item Text")))
.inAdapterView(withId(R.id.cardsGridView))
.perform(click());
Run Code Online (Sandbox Code Playgroud)
我可以点击ListView使用位置Adapter,没有匹配或startWith?
我正在尝试设置我的UI测试目标的语言和区域,不幸的是它似乎不起作用.
我试过两种方式,首先:
我试着用另一种方式:
-AppleLanguages (French)-AppleLocale fr_FR导致UI测试的每种方式仍然以英语发生.而且,当我按下录音按钮时,它会以法语运行...
所以,如果我做错了什么,我很乐意知道!
提前致谢!
我已经使用Xamarin UITest框架为我的Xamarin应用程序创建了自动Android和iOS UI测试.在本地运行测试时,它们工作正常,但在Bitrise CI上运行时,iOS测试运行正常,但Android UI测试仍然失败,出现以下异常:
StartFirstActivity_WaitForActivity_ExpectButtonToHaveText
SetUp : System.Exception : Timed out waiting for result of ClearAppData2
Stack trace:
at Xamarin.UITest.Shared.Android.Commands.CommandAdbClearAppData.Execute (IProcessRunner processRunner, IAndroidSdkTools androidSdkTools) <0x38b3e90 + 0x0064b> in <filename unknown>:0
at Xamarin.UITest.Shared.Execution.Executor.Execute[TDep1,TDep2] (ICommand2 command) <0x32b6478 + 0x00092> in <filename unknown>:0
at Xamarin.UITest.Shared.Android.LocalAndroidAppLifeCycle.EnsureInstalled (Xamarin.UITest.Shared.Android.ApkFile appApkFile, Xamarin.UITest.Shared.Android.ApkFile testServerApkFile) <0x37418c8 + 0x0017a> in <filename unknown>:0
at Xamarin.UITest.Android.AndroidApp..ctor (IAndroidAppConfiguration appConfiguration) <0x31a15e8 + 0x0047a> in <filename unknown>:0
at Xamarin.UITest.Configuration.AndroidAppConfigurator.StartApp (AppDataMode appDataMode) <0x30b4298 + 0x00063> in <filename unknown>:0
at SightPlayer.Core.Test.AppInitializer.StartApp (Platform platform) <0x30b2448 + 0x000ef> …Run Code Online (Sandbox Code Playgroud) 我的iOS应用需要一些特权(GPS,推送通知).当应用程序第一次启动时,iOS会询问用户是否可以将这些权限授予应用程序.我写过一些UITests,想要在本地连接的iPhone上自动运行它们.
问题是我无法覆盖权限问题,我的测试失败了.我发现IDE(Xamarin Studio)部署的应用程序将要求权限,但是通过UITests部署的应用程序不会.所以我试过.AppBundle(path_to_app)但它说这只适用于部署到模拟器.
SetUp:System.Exception:此应用程序包无法在模拟器上运行.要解决此问题,请确保您的目标设备是模拟器.DTPlatformName是应用程序Info.plist中的'iphoneos',而不是'iphonesimulator'.
就像它试图将iPhone应用程序部署到模拟器一样.但Xamarin Studio中的Target设置为真实设备.我试着补充一下.DeviceIdentifier.与.InstalledApp它一起使用时启动(仍然要求权限).但是当我使用时DeviceIdentifier,AppBundle出现了与上面相同的错误.
我的测试在Test Cloud上运行良好.它们在模拟器上工作正常.当我手动部署到设备,启动应用程序并批准权限然后运行UI测试时,它们工作正常.
我无法实现的是让UITests覆盖真实设备上的权限问题.有人做过这个吗?
最后一件事是我找到的AppBundle方法文档"将强制在模拟器上运行"
https://developer.xamarin.com/api/member/Xamarin.UITest.Configuration.iOSAppConfigurator.AppBundle/p/System.String/
所以我可能注定要完成任务,但也许有人知道解决方法?
我编写了一个 Espresso 测试,将一些文本写入 TextView,执行操作,然后检查 TextView 中的文本是否仍然相同。
在其中一台测试设备(华为 P20、Android 8.1.0)上测试失败,因为输入的文本会自动更正(从1234 5678到12th 5678)。这没有通过我的测试。当我手动输入相同的数字时,文本不会自动更正。
这就是我在 Espresso 测试中输入文本的方式:
onView(withId(R.id.reference_value))
.perform(scrollTo(), click())
.check(matches(isDisplayed()))
.perform(typeText("1234 5678"));
closeSoftKeyboard();
Run Code Online (Sandbox Code Playgroud)
我知道我可以将输入文本更改为不会自动更正的内容。但我希望有一个解决方案,通常可以确保输入的文本不会被修改为其他内容。理想情况下,无需手动更改测试设备的配置。
你们中有人知道我该如何实现这一目标吗?
android ui-testing android-espresso swift-keyboard android-8.1-oreo
我正在使用 Espresso 来实现我的应用程序的自动测试框架。但是在我设计的一些测试用例中,我发现我的测试总是失败,根本原因不在我的测试代码中的功能实现代码。根本原因是在android输入法模式下,有时是中文输入模式,而我的输入文本是英文,那么输入值就会失败。所以我想知道如何将当前的typeText输入法模式从中文切换到英文,或者如何在不手动配置的情况下确保输入法模式为英文?我相信这是一个重要的要求,因为当我们的应用程序支持多种语言时,我们需要此功能在测试期间自动切换到所需的语言。以下是我的代码,如果默认输入模式是英文就没有问题。
onView(withId(R.id.entryWordInput))
.perform(typeText(entryWord), closeSoftKeyboard());
onView(withId(R.id.OkButton))
.perform(click());
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我是UI测试的新手,我正在尝试将该功能集成到现有项目中.我正在尝试最基本的测试,只是看到框架在行动,但我遇到了一些困难.我已经为我的项目添加了一个新的UI Testing Bundle目标,并且能够运行我的基本测试.但是,当我尝试在我的测试中实际启动应用程序时,我总是会遇到"尝试启动失败"错误.它还说明了"当前流程参考的零令牌".
这是我正在测试的代码:
@implementation SKYPracticeUITesting
- (void)setUp {
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
self.continueAfterFailure = NO;
// UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
XCUIApplication *app = [[XCUIApplication alloc] init];
// In UI …Run Code Online (Sandbox Code Playgroud) 我正在使用 espresso 运行 Android 仪器测试。
我要运行 70 多个测试,所有测试都通过我的应用程序的不同部分进行点击。
当我将每个测试作为单个测试运行时,它们都有效,并且我得到了绿色测试结果。
当我同时运行它们时(右键单击 androidTest 文件夹 -> 点击运行),其中一些会失败,说找不到视图。
在不同的运行中,不同的测试失败。我想这可能是事情进展得太快了。
你们对如何解决这个问题有什么建议吗?提前非常感谢!
ui-testing ×10
android ×6
ios ×3
xcode ×2
c# ×1
iphone ×1
linkify ×1
localization ×1
objective-c ×1
testing ×1
xamarin ×1
xamarin.ios ×1