React Native End to End Tests with Detox:获取匹配元素的高度、宽度和其他属性

Posted

技术标签:

【中文标题】React Native End to End Tests with Detox:获取匹配元素的高度、宽度和其他属性【英文标题】:React Native End to End Tests with Detox: Getting height, width, and other properties of matched elements 【发布时间】:2021-11-26 21:07:52 【问题描述】:

正如标题所述,我想以编程方式检索 Detox 中匹配元素的属性。我知道 Detox 会看到它们,因为众所周知,当 toBeVisible 期望因 75% 视图规则(针对初学者的内置 Detox 意见)失败时,我们可以看到 detox 得到了什么',通常是这样的消息:

Got: "ReactTextViewid=13725, visibility=VISIBLE, width=376, height=102, has-focus=false, has-focusable=false, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=false, is-layout-requested=false, is-selected=false, layout-params=android.view.ViewGroup$LayoutParams@ac227fb, tag=PROFILE_NAME_TEXT, root-is-layout-requested=false, has-input-connection=false, x=486.0, y=120.0, text=Anonymous, input-type=0, ime-target=false, has-links=false"

所以我们有 widthheightfocus 等。

我的问题是,我们如何以编程方式获取这些属性?具体来说,我有一个在点击按钮后正在扩展的元素,我想确保它的高度比以前大。

如果您检查element(by.id("SOME_ID")) 可用的方法,则只有操作方法可用...

【问题讨论】:

【参考方案1】:

我终于找到了答案,由于当时缺少detox 的输入,最初很难找到答案。我提到的heightwidth 等属性可以通过getAttributes() 方法获得:

const attributes = await element(by.text('Tap Me')).getAttributes();
expect(attributes.text).toBe('Tap Me');

const multipleMatchedElements = await element(by.text('Multiple')).getAttributes();
expect(multipleMatchedElements.elements.length).toBe(5);
expect(multipleMatchedElements.elements[0].identifier).toBe('FirstElement');

Android 和 ios 之间的可用属性也有所不同。请参阅库中的the documentation 以获取getAttributes(),以及添加所有类型的the pull request on detox。

【讨论】:

以上是关于React Native End to End Tests with Detox:获取匹配元素的高度、宽度和其他属性的主要内容,如果未能解决你的问题,请参考以下文章

排毒自动化框架指南:React Native?创建 End 2 端和集成测试框架

使用 while-begin-end 循环时 SQL native 和 JDBC 的区别

End-to-End Speech Recognition in English and Mandarin

如何在 React Native 中使 2 个 <Text> 内联

three supported reliability levels: * End-to-end * Store on failure * Best effort

React native FlexStyle 学习笔记