无法使用量角器获取摩纳哥编辑器中的文本
Unable to get the text inside the monaco editor using protractor
我正在使用量角器黄瓜框架为摩纳哥编辑器编写 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。
如有任何帮助,我们将不胜感激。
最后,一个简单的 return 语句挽救了局面:
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 + '")');
}
);
非常感谢 的回答为我指明了正确的方向。
我正在使用量角器黄瓜框架为摩纳哥编辑器编写 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。
如有任何帮助,我们将不胜感激。
最后,一个简单的 return 语句挽救了局面:
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 + '")');
}
);
非常感谢