用于环形量角器

For loop protractor

本文关键字:量角器 用于      更新时间:2023-09-26

我对量角器还很陌生,但我仍然在思考承诺,btu正在尝试做一个我认为简单的for循环。基本上,我有一个嵌入的文本编辑器,我不能使用(element…).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);
   }

让我们更简单一点-在编辑器中选择所有文本并按退格键一次:

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

窗口上的keys.CONTROL

仅供参考,这里有一种跨平台的方法来自动处理CTRL/COMMAND:

  • 在端到端测试中使用跨平台键盘快捷键

下面是一个示例测试,演示了它是如何工作的(使用ACE编辑器演示页面):

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

请注意,AceEditor包装器后面总是有一个不可见的textarea元素。您也可以使其可见并与之交互。

我还没有尝试过,但你能使用getWebElement定位器吗(http://www.protractortest.org/#/api?view=ElementFinder.prototype.getWebElement)然后将元素的值设置为空字符串?由于该定位器返回一个DOM引用,因此它应该可以工作。类似于:

var editor = element(by.css('div[class*='ace_editor'] > textarea')).getWebElement();
editor.value = '';