我正在测试AngularUI - 输入掩码, 这是我的代码的一部分:
it('should validate the peopleID', function() {
element(by.id('pid')).clear().sendKeys("H12333333A").then(function() {
expect(element(by.id('pid')).getAttribute('value')).not.toMatch("H12333333A");
});
element(by.id('pid')).clear().sendKeys("H123333331").then(function() {
expect(element(by.id('pid')).getAttribute('value')).toMatch("H123333331");
});
});
错误信息是:
Expected: '' to match 'H123333331'.
另一个测试代码:
it('just a little test', function() {
browser.get("http://angular-ui.github.io/ui-utils/");
browser.ignoreSynchronization = true;
element(by.css('[ng-click="y = \'(999) 999-9999\'"]')).click().then(function() {
element(by.name('masked')).clear().sendKeys("999248551a").then(function() {
expect(element(by.name('masked')).getAttribute('value')).not.toMatch("999248551a");
});
element(by.name('masked')).clear().sendKeys("9992485512").then(function() {
expect(element(by.name('masked')).getAttribute('value')).toMatch("9992485512");
});
});
});
错误信息是:
Expected: '(992) 485-5129' to match '(999) 248-5512'.
My Configuration:
protractor 1.6.1
selenium-server-standalone 2.44.0
Chrome 40.0.2214.93
IE 11
Firefox 34.0.5
浏览器执行clear()
然后sendKeys()
执行了expect语句,但是在第一次测试时没有将文本插入<input ...>
,因此我得到了空文本。在第二次测试时,它没有完全清除输入值。
看起来像github问题#1511:https://github.com/angular/protractor/issues/1511 ,但是这个问题说它只是发生了&#34; firefox只是&#34;。我已经尝试将焦点转移到 在插入不正确的文本和正确的文本之间,刚刚收到相同的错误消息。
那么我做错了什么?非常感谢。
答案 0 :(得分:0)
有一些已知的问题与掩码和不同的输入类型(数量,日期等)搞乱webdriver的sendKeys。
要使用掩码,我所知道的最可靠的方法是使用executeScript直接设置值:
browser.executeScript('arguments[0].value = "(123) 456-7890";', element(by.name('masked')).getWebElement());
expect(element(by.name('masked')).getAttribute('value')).toEqual("(123) 456-7890");