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

Javascript clear().sendKeys()在量角器中失败两次,javascript,angularjs,selenium,webdriver,protractor,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");

我正在测试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");
        });
});
错误消息是:
应为:''与'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");
            });
        });
    });
错误消息是:
应为:“(992)485-5129”匹配“(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语句,但在第一次测试时没有将文本插入
,因此我得到了空文本。在第二次测试中,它没有完全清除输入值

看起来像是github问题#1511: ,但这期杂志说它只是“firefox而已”。我试着把焦点转移到 在插入错误文本和正确文本之间的另一端,再次收到相同的错误消息


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

有一些已知的问题与掩码和不同的输入类型(数字、日期等)混淆了webdriver的发送键

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

这对你有用吗。我刚刚尝试了一个公共站点,它工作正常,但我注意到clear().sendKeys()在测试输入掩码时失败了。我添加了第二个测试及其错误消息,如果使用
browser.executeScript('arguments[0].value=“(123)456-78ab;”,元素(by.name('masked')).getWebElement()),可能“输入掩码”是关键点不正确的值将通过验证,然后我将得到“(123)456-78ab”而不是“(123)456-78_uuuu”。