有没有一种方法可以使用 Detox E2E 测试在 FlatList 中找到一个元素
Posted
技术标签:
【中文标题】有没有一种方法可以使用 Detox E2E 测试在 FlatList 中找到一个元素【英文标题】:Is there a way I can find an element in a FlatList using Detox E2E testing 【发布时间】:2021-07-16 23:39:38 【问题描述】:所以在测试我的应用程序时,我使用了一个数据集。由于数据集有很多条目,我使用 FlatList 来显示我的列表。创建列表后,我希望能够验证并点击某些列表项。下面,我附上了我正在尝试使用的代码,但它对我不起作用。如果有人对此有更好的想法,请告诉我。
我认为应该采取的方法。我想不出其他任何东西可以让 FlatList 滚动并找到我正在寻找的项目。
let isNotFound = true;
while (isNotFound)
try
await waitFor(element(by.id((edit_details.index).toString()))).toBeVisible().withTimeout(2000)
isNotFound = false;
catch (e)
await element(by.id('credit_history_list')).swipe('up', 'slow', 0.2)
await element(by.id((edit_details.index).toString())).tap();
它确实有助于滚动列表,并且在实际找到我正在寻找的条目时会继续滚动。但是 .tap() 函数不起作用。相反,detox 继续执行下一行代码。
有没有更好的方法来做到这一点?
提前致谢!
【问题讨论】:
【参考方案1】:Detox'whileElement()
API 听起来恰到好处。
我认为您正在寻找的是:
const itemId = (edit_details.index).toString();
const listId = 'credit_history_list';
await waitFor(element(by.id(itemId))).toBeVisible()
.whileElement(by.id(listId))
.scroll(100, 'down');
【讨论】:
非常感谢@d4vidi!这确实很有帮助,但是,如果我想点击一个元素,它会给我一个错误,即视图不是 75% 可见的。所以我把那个'tap()'函数放在一个try and catch块中。如果视图不是 75% 可见,它将额外滚动 50 像素以使其可见。这是正确的方法吗?如果不清楚,请告诉我,我也会放一个sn-p @MuhammadHasanKhan 是的,我认为这种方法没有任何问题。如果它通过了用例,那就太好了。 @MuhammadHasanKhan 我不明白这是怎么回事。如果您使用的是 android,则使用toBeVisible()
+scroll
本质上会转化为 75% 的可见性断言。您能否在一个小应用程序中创建一个用例,然后作为错误提交?你真的是在 ios 上吗?以上是关于有没有一种方法可以使用 Detox E2E 测试在 FlatList 中找到一个元素的主要内容,如果未能解决你的问题,请参考以下文章
Detox:如何为 Detox 配置提供 bitrise 构建路径以在 bitrise 上测试 E2E
在 e2e 测试中的某个点开始使用 Detox 在 react native
使用 detox 测试 e2e 无法启动 iPhone 模拟器,而是启动 Apple TV