You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Detox进行React Native端到端测试:获取匹配元素的宽高等属性

Detox获取元素属性的实现方案

Detox 从 v20.0.0 版本开始官方提供了属性获取能力,低版本也可以通过原生调用的方式实现需求,具体实现如下:

方案1:使用官方getAttributes API(推荐)

该方法适配了双平台属性读取逻辑,不需要单独处理平台差异(仅属性结构需按平台调整):

  • 基础用法示例(适配你的展开高度验证场景):
// 获取展开前的元素高度
const beforeAttrs = await element(by.id("SOME_ID")).getAttributes();
const beforeHeight = device.getPlatform() === 'ios' ? beforeAttrs.frame.height : beforeAttrs.height;

// 执行展开操作
await element(by.id("EXPAND_BUTTON_ID")).tap();

// 获取展开后的元素高度
const afterAttrs = await element(by.id("SOME_ID")).getAttributes();
const afterHeight = device.getPlatform() === 'ios' ? afterAttrs.frame.height : afterAttrs.height;

// 验证高度符合预期
expect(afterHeight).toBeGreaterThan(beforeHeight);
  • 安卓平台返回的属性和toBeVisible报错信息里打印的属性完全一致,可直接读取width、visibility、text等你需要的所有字段。

方案2:低版本Detox兼容方案

如果你使用的Detox版本低于v20.0.0,可通过invoke直接调用原生视图的属性方法实现读取:

  • 安卓读取高度示例:
const height = await element(by.id("SOME_ID")).invoke('getHeight');
  • iOS读取高度示例:
const height = await element(by.id("SOME_ID")).invoke('frame').invoke('size').height;

该方案需要你了解对应平台原生视图的API命名,跨平台场景需要单独写适配逻辑。

内容的提问来源于stack exchange,提问作者fullStackChris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:54:04