量角元素文本值发送键和属性错误



我一直在尝试在量角器中运行此代码,但是我继续遇到此错误,我也找不到一种方法来获取ANPR_BOX_INPUT文本值。

value:managedPromise :: 871 {[[[Promisestatus]]:"待处理"} 失败 - 当屏幕包含ANPR请求时,应具有有效的许可证号板 套房失败:ANPR屏幕内容

Chrome版本:58.0.3029.110(64位(依赖性:"量角器":" 5.1.2","茉莉核":" 〜2.4.1","业力贾斯汀":"^1.1.0","业力 - 贾斯汀 - html-reporter":"^0.2.2","@types/jasmine":" 2.5.36"

描述('anpr屏幕内容',function(({

it('should have a valid license number plate when screen contains as ANPR request', function () {
    var base_keyboard_ok = browser.driver.findElement(by.id('base-keyboard-ok'));
    var anpr_box_input = browser.driver.findElement(by.className('anpr-box-input'));
    //anpr_box_input.clear().then(function() { anpr_box_input.sendKeys('999'); }); tryed it before, didn't work
    anpr_box_input.clear().then(function() { anpr_box_input.setAttribute("value", "459"); });
    base_keyboard_ok.click();
    /* didn't work       
    anpr_box_input.getText().then(function(text) {
        console.log("AQUI: " + text);
    });
    */
    //console.log("Value: " + anpr_box_input.getAttribute('value')); didn't work
    //working on..
    anpr_box_input.getAttribute('value').then(function(text) {
        console.log("Value: " + text);
    });
    //so i'll need something like
    expect(anpr_box_input.text).toEqual("1234"); 
});

}(;

基于提供的信息,HTML无法用

设置元素的值

anpr_box_input.sendKeys('999');因为它不是input,而是<div>

anpr_box_input.setAttribute("value", "459");也无效,因为 setAttribute不是有效的量角命令。您首先需要知道字段的工作原理,我猜是它是一个<div>元素,反映了包含原始值的另一个字段的值。您需要找到该领域并进行:

  • sendKeys()
  • browser.driver.executeScript('argument[0].setAttribute("name", "value")', element(by.css('#selector').getWebElement())

上方。

我在您的代码上也有1个评论。根据您提供的代码,看起来您有一个角页,但是您使用" vanila" webdriver命令来定位元素,为什么不使用 element(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;
    }
  }
};  

最新更新