testing - 猴子补丁Testcafe
问题描述
我正在尝试通过以下方式对 Testcafe 进行修补:
- 添加在所有测试中可用的自定义方法
t.patch.typeText = async (selector, txt, opts) => {
await t.click(selector);
await t.typeText(selector, txt, opts);
}
/* This didn't work */
- 在每次页面加载时运行自定义代码。
await t.click(Selector('a[href="/no_thing"]');
await t.onPageLoaded(someCustomFunction())
没有找到很多在线谷歌搜索这些,任何指针都会有所帮助。
解决方案
测试控制器实例 ( t
) 在每个测试中都不同,因此您不能以这种方式对其进行修补。
关于您描述的两种情况,请尝试以下方法:
方案 1
使用您需要重用的操作创建辅助函数。您可以在单独的文件中定义帮助程序,然后在需要这些功能时将此文件导入测试:
helpers.js
import { t } from 'testcafe';
export async function type(selector, txt, opts) => {
await t
.click(selector)
.typeText(selector, txt, opts);
}
测试.js
import { Selector } from 'testcafe';
import { type } from './helpers.js';
fixture `My Fixture`
.page `https://devexpress.github.io/testcafe/example/`;
test('My Test', async t => {
await type(Selector('#element'), 'text', { replace: true });
});
另请注意,该t.typeText
操作在键入文本之前单击目标输入。您不需要单独的单击操作来聚焦输入。
有关辅助函数的更多信息,请参阅创建辅助函数。
我们计划支持自定义操作,以便在未来版本中更好地解决您的用例。有关详细信息,请参阅此 GitHub 问题。
方案 2
TestCafe 可以将自定义脚本注入到测试运行、测试或夹具期间访问的每个页面。这些脚本被注入到<head>
标签中并以通常的方式执行。
使用您需要注入的脚本创建一个文件:
脚本.js
window.addEventListener('DOMContentLoaded', function () {
// this code runs on each page when it is loaded
});
然后使用以下方法之一注入这些脚本:
命令行界面
testcafe chrome test.js --client-scripts script.js
编程接口
runner.clientScripts('script.js');
配置文件
{
"clientScripts": "script.js"
}
有关脚本注入的更多信息,请参阅将脚本注入测试页面。
推荐阅读
- spring-boot - 从外部项目文件夹运行jar时找不到springboot文件错误
- scala - 来自参数的 DateTime 的新列
- api - 我应该对 API 密钥使用 Authorization 标头吗
- python - urllib.error.HTTPError:HTTP 错误 403:从 pytorch hub 加载 resnet18 时超出速率限制
- node.js - 将 node-adodb 与 .mdb 访问文件一起使用
- opencv - 如何理解 linux 中 TOP 命令中显示的内存使用百分比
- python - 多列上的pandas中的merge_asof
- ios - 如何强制滚动视图仅在 Xcode 中垂直滚动
- docker - 如何在 Kolla-Ansible 中配置 pip index-url?
- java - 为什么 Netty 没有在 InternalThreadLocalMap 的 indexedVariables 中使用 WeakReference?