2017-06-05 2 views
2

J'ai essayé d'exécuter ce code dans rapporteur mais je reçois toujours cette erreur et je n'arrive pas à trouver un moyen d'obtenir la valeur du texte anpr_box_input de toute façon.Valeur du texte de l'élément Protractor sendKeys et erreur d'attribut

Valeur: ManagedPromise :: 871 {[[PromiseStatus]]: "en attente"} échoué - devrait avoir une plaque de numéro de licence valide lorsque l'écran contient comme demande ANPR Suite a échoué: ANPR contenu de l'écran

Chrome version : 58.0.3029.110 (64 bits) Dépendances: "protractor": "5.1.2", "noyau de jasmin": "~ 2.4.1", "karma-jasmin": "^ 1.1.0" "Karma-jasmin-html-reporter": "^ 0.2.2", "@ types/jasmin": "2.5.36"

d escribe ('contenu d'écran ANPR', fonction() {

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

});

+0

La section html vient out like like it: –

+0

+0

Toute aide sera appréciée. –

Répondre

1

sur la base d'informations fourni et HTML vous ne pouvez pas définir la valeur de l'élément avec

anpr_box_input.sendKeys('999'); parce qu'il est pas un input, c'est un <div>.

anpr_box_input.setAttribute("value", "459"); ne fonctionnera pas non plus car setAttribute n'est pas une commande Protractor valide. Vous devez d'abord savoir comment le champ fonctionne, je suppose qu'il s'agit d'un élément <div> qui reflète la valeur d'un autre champ qui contient la valeur d'origine. Vous devez localiser ce domaine et faire un:

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

sur elle.

J'ai aussi 1 remarque sur votre code. Basé sur le code que vous avez fourni il semble que vous ayez une page angulaire, mais vous utilisez les commandes "vanila" webdriver pour localiser les éléments, pourquoi n'utilisez-vous pas la syntaxe de Protractor avec element(by.css('')) et ainsi de suite?

0

Merci beaucoup wswebcreation, je vais jeter un oeil sur ce que vous venez de mentionner au sujet de la vanila WebDriver mais je viens de trouver une solution juste comme suit:

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

};