- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 500 个元素的列表,当我在页面上使用 app.Query
时,Xamarin.UITest 只给我 6 个元素,因为只有 6 个元素在 UI 中可见。
如何从我的 UITest 中的列表中检索所有 500 个元素?
最佳答案
如上所述,app.Query
的预期行为将只返回页面上所有可见控件的结果。因此,如果控件不可见,app.Query
将不会返回它。
检索列表中所有数据的方法是使用后门方法。
Xamarin 有 additional documentation关于如何在 UITest 中使用后门。
此示例应用实现了教程中的片段: https://github.com/brminnick/UITestSampleApp
因为后门方法仅限于返回一个字符串,所以我们需要能够序列化我们的对象。
您需要添加 Newtonsoft.Json将 NuGet 打包到您的每个项目;即,将 Newtonsoft.Json NuGet 添加到 .NET Standard 项目、iOS 项目、Android 项目和 UITest 项目。
这些方法将用于序列化和反序列化对象。
using Newtonsoft.Json;
public static class ConverterHelpers
{
public static string SerializeObject(object value)
{
return JsonConvert.SerializeObject(value);
}
public static T DeserializeObject<T>(string value)
{
return JsonConvert.DeserializeObject<T>(value);
}
}
AppDelegate
中的这个方法将从您的 iOS 应用程序中公开一个 UITest 可以利用的后门。
如果您没有 iOS 应用,请跳过此步骤。
[Export("getDataAsString:")]
public NSString GetDataAsString(NSString noValue)
{
var data = [Add code here to retrieve the data from your app]
var dataAsString = ConverterHelpers.SerializeObject(data);
return new NSString(dataAsString);
}
MainActivity
(或 Application
类,如果有的话)中的此方法将从您的 Android 应用程序中公开一个后门,UITest 可以利用该后门。
如果您没有 Android 应用,请跳过此步骤。
[Export("GetDataAsString")]
public string GetDataAsString()
{
var data = [Add code here to retrieve the data from your app]
var dataAsBase64String = ConverterHelpers.SerializeObject(data);
return dataAsBase64String;
}
在 UITest 项目中创建一个静态方法以从 UITest 调用后门方法。
internal static List<DataModel> GetListData(IApp app)
{
string dataAsString;
if (app is iOSApp)
dataAsString = app.Invoke("getDataAsString:", "").ToString();
else
dataAsString = app.Invoke("GetDataAsString").ToString();
return ConverterHelpers.DeserializeObject<List<DataModel>>(dataAsString);
}
在 UITest 测试方法中,实现静态方法来检索数据。
[Test]
public void VerifyData()
{
Assert.IsTrue(GetListData(app).Count == 500);
}
关于c# - Xamarin.UITest:如何检索列表中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401600/
XCUIApplication *app = [[XCUIApplication alloc] init]; [app.buttons[@"login"] tap]; 如上所示,在tests.m 文件
我正在尝试为我的项目设置一些 UITest,并且在运行它们时收到错误: System.Exception : Android SDK not found. Please install it and
我有一个使用 Xcode 在 ObjectiveC 中构建的 iOS 应用程序和一个使用 Xamarin.UITest 在 C# 中编写的 UITest,我正在尝试在 BitRise 中创建持续集成工
我的屏幕上有一个文本,显示如下: @"New element #13" 如何对其进行通用测试并通过掩码到达该元素? [[[XCUIApplication alloc] init].buttons[@"
我有一个新项目,我想实现 UITests,但是在初始化 Controller 时遇到以下问题... Error 我的 viewController 标识符是 MainView,我的 Storyboar
我的申请只有法语版。在 Storyboard中,我混合了细节和系统按钮。 在法国设备上启动时,一切都很好,系统按钮有法语名称。 我在我独特的方案中添加了启动时传递的参数 -AppleLanguages
我不确定这是否是好的做法,所以如果不是,请随时给我打电话。我有一个 UI 测试,旨在测试我的应用程序的欢迎屏幕。因此,在测试中,我想添加一个 if 语句,以确保在测试代码运行之前我位于正确的 View
我正在开发一个包含视觉表示(UI)的框架,并且我已经在其中编写了一些 UI 测试,但我无法运行在框架内编写的 UITest。 有人可以指导我是否可以在框架内编写 UITest 吗? 提前致谢。 最佳答
有人熟悉生成 UI 测试时的以下问题吗? Crashed Thread: 26 Dispatch queue: XCUIRecorder_iOS.processingQueue Exc
有一个按钮,点击按钮打开 facebook 登录页面,点击完成按钮返回主视图 Controller 。 这是我录制得到的代码 override func setUp() { supe
我正在尝试为我公司的应用编写 UITest。我看到了几篇关于将命令行参数传递给我的应用程序的文章,例如: if CommandLine.arguments.contains("--uitesting-
我目前正在处理一个包含许多异步代码的项目,并且我正在为这个项目编写 UITest。在开发过程中,我一个一个地运行它们,但从不成组运行。所以我认为测试是成功的。但是当一起测试它们时,大多数都失败了。我正
我正在为 Swift 应用程序使用 iOS UITest。我使用类似的东西, func testAllScreenNavigation() { let app = XCUIApplicatio
我一直在阅读 Apple 新的和改进的 XCTest/UITesting 框架,作为 Android 开发人员我有一些问题。在 android 中,要启动一个我没有源代码来运行 UiAutomator
尝试创建一个 UITest,用于在文本字段中输入电子邮件地址/密码,然后点击登录按钮。使用 Xcode。 我看到 UITest 导航到正确的页面,但它没有检测到文本字段。我确保两个文本字段都选中了“辅
下面是我正在尝试进行 UItest 的表格的图片。我需要验证“AU Auto”旁边是否存在复选标记(表示它已被选中)。我试着查看应用程序的 debugDescription 以找到任何类似于复选标记的
我尝试为我的应用程序开发一个 UI 单元测试。我创建了一个 UI 测试目标,并希望启动在创建目标时生成的示例 XCTest。 当我尝试启动测试时,我收到错误消息: Could not obtain t
我遇到了 Xamarin.UITest 问题,特别是屏幕截图功能。它没有按预期工作。 我正在尝试将“创建的”屏幕截图复制到另一个目录,但出现以下错误: Message: System.IO.FileN
我正在使用 Xamarin.UITest 用 C# 编写 UITest。 如何在 UITest 中动态检索设备屏幕的坐标? 最佳答案 在 Xamarin.UITest 中,当调用 app.Query(
我需要设置我的 模拟器 用于自动化 UI 测试。 特别是从键盘中删除自动更正、拼写检查、预测等。 我正在为这样的一个模拟器这样做: plutil -replace KeyboardAutocapita
我是一名优秀的程序员,十分优秀!