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"
所以我们有 width
、height
、focus
等。
我的问题是,我们如何以编程方式获取这些属性?具体来说,我有一个在点击按钮后正在扩展的元素,我想确保它的高度比以前大。
如果您检查element(by.id("SOME_ID"))
可用的方法,则只有操作方法可用...
【问题讨论】:
【参考方案1】:我终于找到了答案,由于当时缺少detox
的输入,最初很难找到答案。我提到的height
和width
等属性可以通过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