clear().sendKeys() 两次在量角器中失败

clear().sendKeys() twice is failed in protractor

本文关键字:量角器 失败 sendKeys clear 两次      更新时间:2023-09-26

我正在测试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,但问题说它只是"仅限火狐"发生。我尝试将焦点移动到在插入不正确的文本和正确的文本之间,刚刚再次收到相同的错误消息。

那么我做错了什么?非常感谢。

掩码和不同的输入类型(数字、日期等)与 webdriver 的 sendKey 混在一起存在一些已知问题。

要使用掩码,我知道的最可靠的方法是使用 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");