如何在Angular中用Protractor获取嵌入式g-ace-editor文本?
如何获取Ace编辑器中的文本内容?
嘿,我太懂你遇到的这个问题了!Ace编辑器的内容根本不是存在DOM元素的value属性或者文本节点里的,它是在自己独立的JavaScript实例里管理内容的,所以你用常规的getText()或者getAttribute('value')肯定拿不到东西,连sendKeys的返回值也帮不上忙。
不过别担心,我们可以直接调用Ace编辑器自身的API来获取内容,具体步骤如下:
- 首先定位到你的
g-ace-editor容器元素 - 通过执行JavaScript代码,获取Ace编辑器的实例,然后调用它的
getValue()方法拿到内容
举几个常见测试框架的代码例子:
Selenium Java示例
// 执行JS脚本获取编辑器内容 String editorContent = (String) ((JavascriptExecutor) driver).executeScript( "return ace.edit(document.querySelector('g-ace-editor')).getValue();" );
Selenium Python示例
# 执行JS脚本获取编辑器内容 editor_content = driver.execute_script( "return ace.edit(document.querySelector('g-ace-editor')).getValue();" )
小提示
如果你的g-ace-editor内部还有更具体的Ace编辑器元素(比如带有.ace_editor类的子元素),可以调整选择器为document.querySelector('g-ace-editor .ace_editor');要是编辑器是通过ID绑定的,直接用ace.edit('你的编辑器ID')会更准确,你可以根据自己实际的HTML结构灵活调整。
这样拿到内容后,你就能和输入的文本对比,验证sendKeys是否执行成功啦!
内容的提问来源于stack exchange,提问作者Chitwant
相关产品推荐
相关产品推荐

