对于循环量角器

时间:2015-12-10 14:52:26

标签: javascript protractor

我对量角器非常陌生,并且仍然围绕承诺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);
   }

2 个答案:

答案 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与之互动。