xpath - Hur man returnerar namnet på ett element vid fel i protractor?


Jag försöker hantera olika felscenarier när jag letar efter ett element med Protractor i TypeScript. Så här gör jag:

textBoxA = this.findElementBy(locator.XPATH,"//input[@formname='name']");

Här //input[@formname='name'] är min xpath för elementet.

Om xpath anges fel, ger protractor mig ett fel som no element found using xpath... och förmodligen också filen där specen misslyckades osv, vilket många npm-rapportörer också rapporterar.

Men istället för det vill jag ha namnet på elementet som misslyckades som i exemplet ovan, jag vill att textBoxA ska visas någonstans i loggen så att det är lätt att felsöka om jag har många specifikationer.

Hur kan jag uppnå det?

Svar #1

Du kan använda de två nedanstående metoderna för detta:

  1. Ett bättre tillvägagångssätt för detta skulle vara att implementera function(err){} när du anropar någon handling på vilket element som helst. Här kan du hantera felet på följande sätt:

ElementEjHittad, NoSuchWindowsError eller ElementFöråldradError etc...

  1. Ett annat tillvägagångssätt kan vara att implementera en wrapper när elementet skapas. Till exempel: Till exempel:

    var nameElem = findElement(by.id('name'), 'Name Element');

definition av findElement-funktion:

findElement: function(elemCss, elemName){
    element(elemCss).isPresent().then(function(value){
        if (present) {
            /* element exists */
        } else {
            /* element doesn't exist, use elemName and record anywhere in your custom log */
        }
    })
}