Protractor 无法使用量角器在编辑器中获取文本

Protractor 无法使用量角器在编辑器中获取文本,protractor,monaco-editor,Protractor,Monaco Editor,我正在使用量角器框架为摩纳哥编辑器编写BDD测试。不久前,我了解了Monaco API以及如何以编程方式在编辑器中设置值。但这一次,, 我无法使用量角器在编辑器中获取文本。以下是我的代码示例: browser.ignoreSynchronization = true; let driver = browser.driver; // iframe ids let iframeID = 'editorFrame'; let editor

我正在使用量角器框架为摩纳哥编辑器编写BDD测试。不久前,我了解了Monaco API以及如何以编程方式在编辑器中设置值。但这一次,, 我无法使用量角器在编辑器中获取文本。以下是我的代码示例:

browser.ignoreSynchronization = true;
        let driver = browser.driver;
        // iframe ids

       let iframeID = 'editorFrame';

       let editorSpanXpath = '//div[@id="editorContainer"]//div[contains(@class, "monaco- editor")]//div[contains(@class, "editor-scrollable")]'
      // switching to the iFrame to perform tasks inside it
        browser.switchTo().frame(iframeID);

    // clicking on a div inside the editor to ascertain that
    // the browser knows where to  run the script

        driver.findElement(by.xpath(editorSpanXPath)).click();
         browser.executeScript('this.monaco.editor.getModels()[0].getValue()').then(function(editorText){
               let replaceString = 'abracadbra' + editorText
               browser.executeScript('this.monaco.editor.getModels()[0].setValue("' + replaceString + '")');
        }
        );
这里的问题是'editorText'的值一直为空。在运行我的BDD测试时,编辑器中的值将替换为“abracadabranull”

编辑器用一些默认文本初始化。由于“setValue”函数正在工作,我认为浏览器驱动程序在获取加载编辑器的iFrame时不会遇到问题


任何帮助都将不胜感激。

最后,一个简单的回报声明挽救了这一天:

browser.ignoreSynchronization = true;
    let driver = browser.driver;
    // iframe ids

   let iframeID = 'editorFrame';

   let editorSpanXpath = '//div[@id="editorContainer"]//div[contains(@class, "monaco- editor")]//div[contains(@class, "editor-scrollable")]'
  // switching to the iFrame to perform tasks inside it
    browser.switchTo().frame(iframeID);

// clicking on a div inside the editor to ascertain that
// the browser knows where to  run the script

    driver.findElement(by.xpath(editorSpanXPath)).click();
     browser.executeScript('return this.monaco.editor.getModels()[0].getValue()').then(function(editorText){
           let replaceString = 'abracadbra' + editorText
           browser.executeScript(' return this.monaco.editor.getModels()[0].setValue("' + replaceString + '")');
    }
    );

非常感谢您的回答为我指明了正确的方向。

等待driver.executeScript('返回this.monaco.editor.getModels()[0].setValue(“+text+”))为我工作!!