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

时间:2015-01-28 09:43:21

标签: javascript angularjs selenium webdriver protractor

我正在测试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;。我已经尝试将焦点转移到 在插入不正确的文本和正确的文本之间,刚刚收到相同的错误消息。

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

1 个答案:

答案 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");