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

时间:2017-06-05 15:13:08

标签: angularjs angular attributes protractor sendkeys

我一直试图在量角器中运行此代码,但我一直收到此错误,但无论如何我都找不到获取anpr_box_input文本值的方法。

价值:ManagedPromise :: 871 {[[PromiseStatus]]:"待定"}     失败 - 当屏幕包含ANPR请求时,应该有一个有效的许可证号码牌   套件失败:ANPR屏幕内容

Chrome版本:58.0.3029.110(64位) 依赖关系: "量角器":" 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"

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

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"); 
});

});

2 个答案:

答案 0 :(得分:1)

根据提供的信息和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条评论。根据您提供的代码,看起来您有一个Angular页面,但您正在使用&#34; vanila&#34;用于定位元素的webdriver命令,为什么不使用带有element(by.css(''))的Protractor语法等等?

答案 1 :(得分:0)

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

#include <stdio.h>
#include <stdlib.h>
int myArray[100];
int* ptr = myArray;
int i;
int n = sizeof(myArray);
int SortedArray[100];

int MakeRandArray(ptr, i)
{
    for (i = 0; i < n; i++) {
        (ptr + i) = rand()
    }
}

int SortArray(ptr)
{
    int a;
    int j = (i + 1);
    for (i = 0; i < n; i++) {
        if ((ptr + i) > (ptr + j)) {
            (ptr + i) = (ptr + j)
        }
    }
}

int main()
{
    MakeRandArray(*ptr, i);
    SortArray(*ptr);
}