仅 Detox 测试启动画面

2024-04-10

我正在我的 React-Native 项目上运行 detox,并且只能测试启动屏幕。启动屏幕进入登录屏幕,但排毒代码不允许我测试此元素。

测试代码:

describe('Splash', () => {
  beforeEach(async () => {
    await device.reloadReactNative();
  });

  it('should have splash screen', async () => {
    await expect(element(by.id('splash'))).toBeVisible();
    await expect(element(by.id('login'))).toBeVisible();
  });
});

给出的错误:

● Splash › should have splash screen

    Failed: [Error: Error: Cannot find UI Element.
    Exception with Assertion: {
      "Assertion Criteria":  "assertWithMatcher:matcherForSufficientlyVisible(>=0.750000)",
      "Element Matcher":  "((!(kindOfClass('RCTScrollView')) && (respondsToSelector(accessibilityIdentifier) && accessibilityID('login'))) || (((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && parentThatMatches(kindOfClass('RCTScrollView'))) && ((kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) && parentThatMatches((respondsToSelector(accessibilityIdentifier) && accessibilityID('login'))))))",
      "Recovery Suggestion":  "Check if the element exists in the UI hierarchy printed below. If it exists, adjust the matcher so that it accurately matches element."
    }


    Error Trace: [
      {
        "Description":  "Interaction cannot continue because the desired element was not found.",
        "Error Domain":  "com.google.earlgrey.ElementInteractionErrorDomain",
        "Error Code":  "0",
        "File Name":  "GREYElementInteraction.m",
        "Function Name":  "-[GREYElementInteraction matchedElementsWithTimeout:error:]",
        "Line":  "124"
      }
    ]

当它运行时第一个测试通过而不测试登录组件


项目在屏幕上渲染需要时间。您可以使用waitFor排毒提供的财产。

在大多数情况下,测试应自动与应用程序同步。当同步不起作用时,您可以使用 waitFor 来实现故障保护。

您可以阅读有关使用的更多信息waitFor in the 文档 https://github.com/wix/Detox/blob/master/docs/APIRef.waitFor.md.

注意:每个 waitFor 调用都必须使用 withTimeout() 设置超时。调用 waitFor 而不设置超时将不会执行任何操作。

注意:当达到超时时,waitFor 不会抛出异常,而是继续执行下一行。为了确保您的测试按您期望的方式工作,请在以下行添加expect()。

因此,根据文档中的示例,您应该将测试更新为

it('should show login screen', async () => {
  await expect(element(by.id('splash'))).toBeVisible()
  await waitFor(element(by.id('login'))).toBeVisible().withTimeout(2000);
  await expect(element(by.id('login'))).toBeVisible()
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅 Detox 测试启动画面 的相关文章

随机推荐

  • 如何防止 Spring Boot 守护进程/服务器应用程序立即关闭/关闭?

    我的 Spring Boot 应用程序不是 Web 服务器 而是使用自定义协议的服务器 在本例中使用 Camel 但是 Spring Boot 在启动后立即停止 优雅地 我该如何防止这种情况 我希望应用程序能够通过 Ctrl C 或以编程方
  • 参数 targetplatformversion 不能为 null - Visual Studio 2015

    我有 Windows 10 安装了 Visual Studio 2015 的笔记本电脑 我正在尝试创建一个通用 Windows Phone 应用程序的新项目 我总是收到错误参数 targetplatformVersion 不能为空 以下是我
  • 插入符 rfe + sum 与 ROC 中的特征选择

    我一直在尝试使用插入符包应用递归功能选择 我需要的是 ref 使用 AUC 作为性能衡量标准 经过一个月的谷歌搜索后 我无法让该过程正常运行 这是我使用过的代码 library caret library doMC registerDoMC
  • ElasticSearch Nest BulkAll 在收到无法从 _bulk 重试的失败后停止

    Using BulkAll 批量插入时我收到这个奇怪的错误 BulkAll halted after receiving failures that can not be retried from bulk 但是 当我检查异常时 我仍然得到
  • 您将使用什么 HTML/CSS 来创建带背景的文本输入?

    我的网站设计包括如下所示的文本输入字段 输入字段http img401 imageshack us img401 4453 picture1ts2 png http img401 imageshack us img401 4453 pict
  • tooltip.js popper.js 使用示例

    由于不太精通 javascript 我不明白工具提示 js https popper js org tooltip documentation html根本没有文档 为什么不包括像我这样的人的例子 我必须安装这个库才能正常工作吗 I add
  • Visual Studio 模板参数不返回值?

    我试图在创建 Visual Studio 模板时获取这些参数 但它不返回值 它只是保持这样 string rootnamespace rootnamespace this is the output it just stays as it
  • 添加画布 - Android

    我动态创建画布 Canvas canvas new Canvas 但我怎样才能将它添加到我的 LinearLayout 中呢 LinearLayout ll new LinearLayout this 您可以使用简单的 addView 来完
  • 解决 VS 2017 中的“节点定义冲突”TS4090 错误

    我有一个可以构建并运行的 TypeScript 项目 但我有大量构建错误 这些错误似乎都源于一个错误 TS4090 TS 在 C projectpath node modules types node index d ts 和 C Micr
  • 当通过 setImageBitmap() 设置时,ImageView 将不会显示图像

    我在显示 SD 卡上的现有图像时遇到问题 ImageView photoView ImageView findViewById R id img photo File photoFile new File Environment getEx
  • Firebase - 从数据库节点获取随机子节点

    我正在写一个Firebase Cloud Function这是从一个调用的Android应用程序 该函数应该从用户节点中获取一个随机用户Database 任何随机用户 但不是发送请求的用户 并将其返回给客户端 问题在于数据不是以数组的形式构
  • 如何正确地将日期转换为字符串并以 symfony 形式转换回来,以便可以使用日期选择器

    在我的 Symfony 4 应用程序中 我有一个包含日期类型字段的实体 默认情况下 Symfony 将其呈现为一组月 日 年的选择框 我已将其更改为文本小部件 以便我可以使用 jQuery UI 日期选择器 但我在尝试提交表格时遇到了问题
  • SCOM 上的 PowerShell 无法导入模块

    我有一个问题 如果没有帮助 我无法解决 我在第一台 PC 上有 SCOM 在第二台 PC 上有 SCOM 代理 当我的类在代理 PC 中发现时 它必须运行 PowerShell 脚本 该脚本包含命令 导入模块故障转移集群 但此命令失败并出现
  • 是什么导致 Web 服务 URL 和命名空间之间存在差异?

    我有一个包含 Web 服务的 ASP NET Web 项目 当我运行该服务时 它会将我带到一个显示所有公开方法的页面 使用类似于以下内容的 URLhttp api example com game service asmx 在 Web 服务
  • MySql - 大小 VARCHAR

    很多人对我说设置 VARCHAR 100 没有意义 它与 put 255 相同 我想知道为什么 那是垃圾 他们可能正在谈论这样一个事实 varchar无论最大长度是 100 还是 255 超过该长度的长度将使用两个字节 最多 64K 都使用
  • 关于 NSRunLoop,需要澄清

    When i Logger logger Logger new NSURL url NSURL URLWithString http www google com NSURLRequest request NSURLRequest requ
  • 如何使用 Linq To XML 获取元素值

    使用 Linq To XML 如何从下面的 xml 中获取 space id 值 720 我在读this http msdn microsoft com en us library bb308960 aspx但我认为xml中的命名空间是我的
  • 让 GitLab CI 克隆私有存储库

    我设置了 GitLab 和 GitLab CI 来托管和测试我的一些私人存储库 对于此系统下的作曲家模块 我设置了 Satis 来解析我的私有包 显然这些私有包需要 ssh 密钥来克隆它们 并且我在终端中可以使用它 我可以运行compose
  • ADO.Net (Azure AD) 错误“不支持关键字:身份验证”

    我正在尝试通过 C 代码使用 Azure AD 凭据连接到 Azure 数据库 代码如下 它在我的系统上运行良好 但是当我将它部署到32位VM时 它显示错误 不支持关键字 身份验证 VM 安装了 Net Framework 4 5 但未安装
  • 仅 Detox 测试启动画面

    我正在我的 React Native 项目上运行 detox 并且只能测试启动屏幕 启动屏幕进入登录屏幕 但排毒代码不允许我测试此元素 测试代码 describe Splash gt beforeEach async gt await de