javascript - 如何在 contenteditable span 中设置插入符号位置然后发送 key ?

标签 javascript testing selenium protractor end-to-end

<span name="workitemContent" contenteditable="">root 0 child 0 zzzz</span>

例如,我如何使用 Protractor 将光标设置在单词“child”之后,然后将其他文本(使用 sendKeys 或类似的)发送到该位置的跨度中?

之后它可能看起来像:

<span name="workitemContent" contenteditable="">root 0 child with red hair 0 zzzz</span>

我看到其他问题可以回答如何使用 JavaScript(例如 How to set caret(cursor) position in contenteditable element (div)?),但不能使用 Protractor 。

最佳答案

您可以点击带有偏移量的元素,例如:

var elm = element(by.name("workitemContent"));
browser.actions().mouseMove(elm, 5, 0).click().perform();

但是,我不确定您是否可以称其为可靠的方法。


另一种选择是按照您链接的问题中提供的解决方案,通过 browser.executeScript() 执行 javascript:

var elm = element(by.name("workitemContent"));

function setCursor(arguments) {
    var range = document.createRange();
    var sel = window.getSelection();
    range.setStart(arguments[0].childNodes[2], arguments[1]);
    range.collapse(true);
    sel.removeAllRanges();
    sel.addRange(range);
}
browser.executeScript(setCursor, elm.getWebElement(), 5);

关于javascript - 如何在 contenteditable span 中设置插入符号位置然后发送 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132790/

相关文章:

c++ - 快疯了,为什么我的变量在我身上发生变化?

Android:如何对 "IllegalStateException: Can not perform this action after onSaveInstanceState"进行单元测试

Python Selenium 如何在点击链接之前等待

python - 使用 Selenium 查找 div 中的索引元素

python - 通过selenium 输入tinymce 时遇到问题

javascript - 嵌套异步 jquery promise

android - TouchUtils 和 ActivityInstrumentationTestCase2 用户事件单元测试用例不工作

javascript - 简单的 jQuery 单击事件在 IE11 中不起作用?

javascript - 使用 CommonJS promise : rejection vs. 异常

javascript - 显示图像流,如 HTML 中的视频