cypress - 如何等到自动完成条目只显示一行
问题描述
我正在针对我无法以任何方式更改的 PHP 站点运行 Cypress。
它有一个自动完成输入字段,可以将 XHR 调用流发送到服务器。
结果填充了一个表格,其中每一行都有一个可以单击的按钮。
我需要等到只有一行,然后单击其按钮。
cy.get('#dataTables_clients_filter > label > .form-control').type(client).then(() => {
cy.get('table#dataTables_clients > tbody > tr > td:nth-child(6) > i').click();
}
上面的结果是错误的cy.click() can only be called on a single element. Your subject contained 100 elements.
XHR 调用的数量取决于客户的价值。
困难由此而来:当theInput.type(client)
一次插入一个字母时,页面会为每个字母发送一个新的 XHR。这意味着最初会有一个很长的行列表,其中一个将始终包含“客户端”。随着越来越多的字母被处理,列表变得越来越短,最终只剩下一行。
我怎样才能等到以下任何一项为真?
tbody > tr:nth-child(0) > td:nth-child(4)
等于client
- 不再发送 XHR 呼叫
- 表格行数组的长度等于 1
解决方案
cy.waitUntil(() => {
return cy.get('@Clientes').eq(0).children().eq(4).then(($cl) => {
const res = Boolean($cl[0].innerText === client);
return res;
});
}, {
errorMsg: 'Autocomplete failed to find client',
timeout: 15000,
interval: 500
});
推荐阅读
- android - WifiManager setWifiEnabled(),禁用Wi-Fi后继续?
- python - 将Basemap转换为Cartopy,是否有Basemap的shiftgrid()等等效函数?
- bash - Bash 的 $_ 变量没有扩展
- git - 在 git 中变基后不要结帐分支
- http - Bitbucket 通过 http nginx 代理
- python - python中用类型提示注释路径的正确方法是什么?
- android - 如何从 Recyclerview 中的 NestedScrollView 中获取可见位置?
- wcf - 将 WCF 服务添加到 .NET Core 2.2 REST API 时出错
- php - 来自 php 和 php 脚本中另一个函数的函数调用应该运行背景
- pycharm - PyCharm:在路径中查找:跳过导入语句