我对量角器非常陌生,并且仍然围绕承诺btu试图做一个,我认为,一个简单的循环。基本上我有一个嵌入式文本编辑器,我不能使用(元素...)。clear();功能因为元素无法与之交互。
所以我想在文本编辑器中获取文本长度(x),然后按退格x次,清除文本。
非常感谢任何帮助。
element(by.css("div[class='ace_content']")).getText().then(function(textvalue) {
for (var i = textvalue.length; i == 0; i--) {
console.log("i =" + i)
element(by.css("div[class*='ace_editor'] > textarea")).sendKeys(protractor.Key.BACK_SPACE);
}
答案 0 :(得分:0)
我还没试过这个,但你可以使用getWebElement
定位器(http://www.protractortest.org/#/api?view=ElementFinder.prototype.getWebElement),然后将元素的值设置为空字符串吗?由于该定位器返回DOM引用,因此它应该可以工作。类似的东西:
var editor = element(by.css('div[class*='ace_editor'] > textarea')).getWebElement();
editor.value = '';
答案 1 :(得分:0)
让我们更简单 - 选择编辑器中的所有文本并按一次退格:
var editor = element(by.css("div.ace_content")),
keys = protractor.Key;
browser.actions()
.click(editor)
.sendKeys(keys.chord(keys.COMMAND, "a"))
.sendKeys(keys.BACKSPACE)
.perform();
Windows上的 keys.CONTROL
。
仅供参考,这是一种自动处理CTRL / COMMAND的跨平台方式:
以下是一个示例测试,演示了它是如何工作的(使用ACE Editor Demo page):
describe("Ace editor", function () {
beforeEach(function () {
browser.ignoreSynchronization = true;
browser.get("https://ace.c9.io/#nav=about");
});
it("should change the ace editor text", function () {
var EC = protractor.ExpectedConditions,
editor = $(".ace_content"),
keys = protractor.Key;
browser.wait(EC.visibilityOf(editor), 5000);
browser.actions()
.click(editor)
.sendKeys(keys.chord(keys.COMMAND, "a"))
.sendKeys(keys.BACKSPACE)
.sendKeys("test")
.perform();
expect($(".ace_identifier").getText()).toEqual("test");
});
});
请注意,Ace Editor包装器后面始终存在不可见的textarea
元素。您也可以make it visible与之互动。