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

如标题所述,我想以编程方式检索 Detox 中匹配元素的属性。我 知道 Detox 看到了它们,因为众所周知,当 toBeVisible 期望因 75% 的观点规则(针对外行人的内置 Detox 意见)而失败时,我们可以看看什么排毒'got',一般都是这样的信息:

Got: "ReactTextView{id=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")) 可用的方法,则只有操作方法可用...

我终于找到了最初因 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 in the library for getAttributes(), and the pull request on detox