Angularjs 量角器元素文本值sendKeys和属性错误

Angularjs 量角器元素文本值sendKeys和属性错误,angularjs,angular,attributes,protractor,sendkeys,Angularjs,Angular,Attributes,Protractor,Sendkeys,我一直试图在量角器中运行这段代码,但我不断地遇到这个错误,而且我也找不到一种方法来获取anpr_box_输入文本值 值:ManagedPromise::871{[[PromiseStatus]]:“待定”} 失败-当屏幕包含as ANPR请求时,应具有有效的车牌号 套件失败:ANPR屏幕内容 Chrome版本:58.0.3029.110(64位) 依赖项: “量角器”:“5.1.2”, “茉莉花芯”:“~2.4.1”, “因果报应茉莉”:“^1.1.0”, “karma jasmine html

我一直试图在量角器中运行这段代码,但我不断地遇到这个错误,而且我也找不到一种方法来获取anpr_box_输入文本值

值:ManagedPromise::871{[[PromiseStatus]]:“待定”} 失败-当屏幕包含as ANPR请求时,应具有有效的车牌号 套件失败:ANPR屏幕内容

Chrome版本:58.0.3029.110(64位) 依赖项: “量角器”:“5.1.2”, “茉莉花芯”:“~2.4.1”, “因果报应茉莉”:“^1.1.0”, “karma jasmine html reporter”:“^0.2.2”, “@types/jasmine”:“2.5.36”

描述('ANPR屏幕内容',功能(){


}))

根据提供的信息和HTML,您不能使用

anpr_box_input.sendKeys('999')因为它不是
输入
,所以它是

anpr_box_input.setAttribute(“value”,“459”)也将不起作用,因为
setAttribute
不是有效的量角器命令。您首先需要知道字段是如何工作的,我猜它是一个
元素,反映了包含原始值的其他字段的值。您需要找到该字段并执行以下操作:

  • sendKeys()
  • browser.driver.executeScript('argument[0].setAttribute(“name”、“value”)”),元素(by.css('#selector').getWebElement())
在上面


我对你的代码还有一点意见。根据你提供的代码,看起来你有一个有角度的页面,但是你正在使用“vanila”webdriver命令来定位元素,为什么不使用
元素的量角器语法(by.css(“”))
等等?

非常感谢wswebcreation,我将看看您刚才提到的有关vanila webdriver的内容,但我刚刚找到了一个解决方案,如下所示:

it('should have a valid license number plate when screen contains as ANPR request', function () { 
    var buttonKey;

    buttonKey = browser.driver.findElement(by.id('button_A')); 
    buttonKey.click();

    browser.sleep(SLEEP_TIMER);

    buttonKey = browser.driver.findElement(by.id('button_B'));
    buttonKey.click();

    var base_keyboard_ok = browser.driver.findElement(by.id('base-keyboard-ok'));
    base_keyboard_ok.click();

    var anpr_box_input = browser.driver.findElement(by.className('anpr-box-input'));
    anpr_box_input.getAttribute('innerHTML').then(function(anpr) {
        console.log("Plate: " + anpr);
        expect(globalE2EFunctions.validateAnpr(anpr)).toBe(true);
    });

});

module.exports = {

  //Still need to implement regex plates validation according to each country patterns
  validateAnpr: function(anpr) {
    if(anpr != 'CANCEL' && anpr != 'DEL' && anpr != 'OK'){
      return true;
    } else{
        return false;
    }
  }

};  

html的部分也一样:任何帮助都将不胜感激。也尝试过这个,但什么都没有发生。然后(函数(文本){console.log(“值:”+text);});
it('should have a valid license number plate when screen contains as ANPR request', function () { 
    var buttonKey;

    buttonKey = browser.driver.findElement(by.id('button_A')); 
    buttonKey.click();

    browser.sleep(SLEEP_TIMER);

    buttonKey = browser.driver.findElement(by.id('button_B'));
    buttonKey.click();

    var base_keyboard_ok = browser.driver.findElement(by.id('base-keyboard-ok'));
    base_keyboard_ok.click();

    var anpr_box_input = browser.driver.findElement(by.className('anpr-box-input'));
    anpr_box_input.getAttribute('innerHTML').then(function(anpr) {
        console.log("Plate: " + anpr);
        expect(globalE2EFunctions.validateAnpr(anpr)).toBe(true);
    });

});

module.exports = {

  //Still need to implement regex plates validation according to each country patterns
  validateAnpr: function(anpr) {
    if(anpr != 'CANCEL' && anpr != 'DEL' && anpr != 'OK'){
      return true;
    } else{
        return false;
    }
  }

};