javascript - 使用 Cypress 选择文本
问题描述
我试图在textarea
使用 Cypress 中选择文本,但遇到了一些问题。Cypress api没有我能找到的开箱即用的方法,所以我尝试自己实现它。
我找到了这个关于选择文本的 stackoverflow 答案,并决定效仿它的例子。我得到的是这样的:
selectTextWithin = (selector: string) => {
cy.document().then((doc: Document) => {
cy.window().then((win: Window) => {
cy.get(selector).then((textElement: JQuery<HTMLElement>) => {
if (win.getSelection) {
const selection = win.getSelection();
const range = doc.createRange();
range.selectNodeContents(textElement.get(0));
selection.removeAllRanges();
selection.addRange(range);
} else {
throw new Error("Can't select text.")
}
})
})
})
}
它执行没有错误,但似乎没有选择任何文本。
解决方案
您链接到的答案涉及在输入字段之外专门选择文本。这是在输入字段中选择文本的答案。
他们发布了一个演示,我已经为赛普拉斯修改了它。
HTML:
<html>
<body>
<textarea type="textarea" name="message" id="message">Hello World</textarea>
</body>
</html>
柏:
function createSelection(field, start, end) {
if( field.createTextRange ) {
var selRange = field.createTextRange();
selRange.collapse(true);
selRange.moveStart('character', start);
selRange.moveEnd('character', end);
selRange.select();
} else if( field.setSelectionRange ) {
field.setSelectionRange(start, end);
} else if( field.selectionStart ) {
field.selectionStart = start;
field.selectionEnd = end;
}
field.focus();
}
describe('Text selection', function() {
it('Selects text in a text area', function() {
cy.get("#message").then(textarea => {
createSelection(textarea, 0, 5);
});
}
}
推荐阅读
- php - 如何在 laravel 中的 updateOrCreate 上按月和年过滤?
- google-sheets - 是否可以在 Google 表格中重构自定义方法?
- apache - 简单的 url Htaccess 重定向 + youtube
- python - 缺少 1 个必需的位置参数:odoo 中的“自我”?
- python - int() 参数必须是字符串、类似字节的对象或数字,而不是 'list' 代码错误
- html - 如何以角度将分页组件添加到表格中?
- c# - LINQ to Entities 无法识别方法“System.Collections.Generic.IEnumerable”1
- wordpress - functions.php 中的破折号
- node.js - @tensorflow/tfjs-node-gpu 中相对较小的神经元网络使用过多的 ram
- wordpress - WordPress网站被黑了?