我正在使用Protractor来测试我的Bootstrap AngularJS应用程序。
textarea“input”和“output”具有与之关联的行号。
因此,当我使用element(by.id('output')).getText()
检查“output”textarea的值时,它总是returns line number'1'
而不是textarea中的值。下面是html和spec.js文件的片段
homepage.html
<div>
<textarea id= "input" ui-codemirror="{ onLoad : editorLoaded }"
ng-model="input" ng-trim="false"></textarea>
<textarea id="output" ui-codemirror="viewerOptions"
ng-model="output"></textarea>
</div>
homepage.spec.js
describe('homepage', function() {
it('check if output matches input', function() {
browser.get('your url');
var input = element(by.model('input'));
input.sendKeys('abc;');
var result = element(by.id('output'));
expect(result.getText()).toEqual('abc;');
});
});
关于如何解决这个问题的任何指针???
答案 0 :(得分:4)
对于input
和textarea
元素,您应始终使用getAttribute('value')
代替getText()
。以下是如何使用它 -
var result = element(by.id('output'));
expect(result.getAttribute('value')).toEqual('abc;');
有关为什么getText不能对输入元素起作用的更多信息,请检查量角器faq: https://github.com/angular/protractor/blob/master/docs/faq.md#the-result-of-gettext-from-an-input-element-is-always-empty
希望它有所帮助。
答案 1 :(得分:0)
问题:无法从TexArea获取值。调试问题后,我发现根本原因是sendKey()api。我使用下面的代码片段将文本写入TextArea,但浏览器始终显示空字段。
var input = element(by.model('input'));
input.sendKeys('abc;');
解决方案:经过大量试验和错误后发现browser.actions().sendKeys('abc;').perform();
有助于将文本输入TextArea。 perform()api使用当前驱动程序创建一个新的动作序列。
describe('Testing UI', function() {
it('opens a workshop page', function() {
browser.get('url');
browser.sleep(2000);
});
it('starts editing', function() {
var inputField = element(by.id('input'));
browser.actions().doubleClick(inputField).perform();
});
it('enters some text', function() {
var inputField = element(by.id('input'));
browser.actions().sendKeys('abc;').perform();
browser.sleep(3000); // to let you see the result
var inputcharcount = inputField.getAttribute('value').length;
expect(inputcharcount,4);
var result = element(by.id('output'));
expect(result.getText()).toEqual('abc;');
});
});
我使用了element(by.id(&#39; output&#39;))。getText()api从输出textarea中获取值。因此,在输入textarea(sendKey)中输入文本并在生成的textarea(getText)中处理输出的完整测试用例可以正常工作。