angular - 如何在 testCafe 中模拟文本选择
问题描述
我有一个对文本选择做出反应的 Ionic/Angular 应用程序(例如,用于电子书中的注释)。用户可以在浏览器中突出显示文本,然后弹出一个菜单(有点覆盖/扩充浏览器上下文菜单)以允许操作。我想用 testcafe 测试该功能。(呈现文本的组件对来自浏览器的“selectionchange”事件做出反应。)
除了选择文本命令( https://devexpress.github.io/testcafe/documentation/test-api/actions/select-text.html )之外,似乎没有其他方法可以模拟文本选择,但这仅限于输入、文本区域或内容可编辑项。我的文字不是这些 - 它是直的
元素。
关于如何实现这一点的任何建议?
解决方案
你是对的,SelectText 命令仅限于输入、文本区域和 contenteditable 元素。如果您使用Selection API使用自定义选择逻辑实现自己的 ClientFunction,则可以使用ClientFunctions机制解决问题。我准备了一个例子。如果您需要选择文本内容的单独部分,请根据需要进行修改。
import { Selector, ClientFunction } from 'testcafe';
fixture `selection`
.page `http://example.com`;
const selectElement = (selector) => ClientFunction(() => {
const selection = document.getSelection();
const range = document.createRange();
range.selectNode(selector());
selection.addRange(range);
}, { dependencies: { selector } });
test('selection', async t => {
await selectElement(Selector('h1'))();
await t.debug();
});
推荐阅读
- vhdl - VHDL 中的 MOD-10 单位 BCD 倒计时定时器实现
- python - 如何从存储在 .csv 文件中的 3D 对象创建相机将显示的图像?
- django-rest-framework - 如何通过客户端处理延迟加载数据表?
- python - 将零填充到 Python 列表
- r - 有没有办法使用 tm_layout 自定义图例直方图
- hibernate - Kotlin:即使我全部使用 kotlin-maven 插件,为什么休眠实体类是最终的?
- python - 如何使用 Selenium 在下拉列表中选择项目?
- php - 在第二页上将 php 返回到 html 的问题
- python - FindContours 仅支持 CV_8UC1 图像
- javascript - 关于javascript中while循环的问题