如何在contentedable span中设置插入位置然后发送Keys?

时间:2015-05-08 21:01:33

标签: javascript testing selenium protractor end-to-end

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

例如,我怎样才能使用量角器将光标设置在&#34; child&#34;之后?然后将其他文本(带有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)?),但不能使用量角器。

1 个答案:

答案 0 :(得分:4)

您可以使用偏移量执行点击元素,例如:

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);