首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >量角器元素文本值sendKeys和属性错误

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

Stack Overflow用户
提问于 2017-06-05 23:13:08
回答 2查看 1K关注 0票数 2

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

值: ManagedPromise::871 {[PromiseStatus]:"pending"} failed -当屏幕包含as ANPR request Suite failed: ANPR屏幕内容时,应具有有效的车牌

Chrome版本: 58.0.3029.110 (64位)依赖关系:"protractor":"5.1.2","jasmine-core":"~2.4.1","karma-jasmine":"^1.1.0","karma-jasmine-html-reporter":"^0.2.2","@types/jasmine":"2.5.36“

describe('ANPR屏幕内容‘,function () {

代码语言:javascript
复制
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"); 
});

});

EN

回答 2

Stack Overflow用户

发布于 2017-06-06 02:29:40

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

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

由于setAttribute不是有效的量角器命令,因此anpr_box_input.setAttribute("value", "459");也不起作用。您首先需要知道字段是如何工作的,我猜测它是一个<div>元素,它反映了包含原始值的另一个字段的值。您需要找到该字段并执行以下操作:

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

这就去办。

我还有一个关于你的代码的备注。基于您提供的代码,它看起来像是一个角度页面,但是您正在使用"vanila“webdriver命令来定位元素,为什么您不对element(by.css(''))等使用量角器语法呢?

票数 1
EN

Stack Overflow用户

发布于 2017-06-06 04:46:43

非常感谢wswebcreation,我会看看你刚才提到的vanila webdriver,但我刚刚找到了一个解决方案,如下所示:

代码语言:javascript
复制
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;
    }
  }

};  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44372081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档