Пишу BDD-тесты для Monaco-Editor с использованием фреймворка транспортир-огурец. Некоторое время назад я узнал об API Монако и о том, как программно установить значение внутри редактора. Но на этот раз я не могу получить текст в редакторе Monaco с помощью транспортира. Вот образец моего кода:
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, в который загружается редактор.
Любая помощь будет оценена.