2017-07-07 4 views
0

Ich bin ein Anfänger bei der Verwendung von Winkelmesser und ich verwende es, um eine einfache Testautomatisierung für ein Add-in in Outlook zu erstellen.
Ich teste derzeit vor:Winkelmesser: Gelöstes Versprechen wird immer noch abgelehnt

  • Öffnen Sie eine E-Mail
  • Klicken Sie auf Add-In-Taste

Die Frage ist, in einer meiner Funktionen (openEmail), die browser.wait verwendet, Die von ihm zurückgegebene Zusage wird abgelehnt, nachdem sie gelöst wurde.

utility.js

function waitElement(method, { container, selector, timer }) { 
    let _element = container ? 
    container.$(selector) : $(selector); 

    return browser.wait(
    protractor.ExpectedConditions[method](_element), 
    1000 * (timer || 1), 
    'Unable to wait for the element' 

).then((() => _element)); 
} 

isClickable(options) { 
    return waitElement('elementToBeClickable', options); 
} 

outlook.js

let _ = require('./utility.js'); 

function openEmail(email) { 
    _.isClickable({ 
    selector: email, 
    timer: 15 

    }).then(() => { 
    console.log('OPEN EMAIL - CLICKABLE'); 
    el.click(); 

    }).catch(() => { 
    throw Error('unable to click email.'); 
    }); 
} 

function signIn(credentials) { 
    let usernameField = $('#cred_userid_inputtext'); 
    let passwordField = $('#cred_password_inputtext'); 

    usernameField.sendKeys(credentials.username); 
    passwordField.sendKeys(credentials.password); 

    _.isClickable({ 
    selector: '#cred_sign_in_button', 
    timer: 5 

    }).then(el => { 
    console.log('SIGN IN - CLICKABLE'); 
    el.click(); 

    }).catch(() => { 
    throw Error('unable to click sign in button.'); 
    }); 
} 

test.js

let outlook = require('./outlook.js'); 

describe('log in',() => { 

    beforeAll(() => { 
    browser.ignoreSynchronization = true; 
    browser.get('https://outlook.office.com'); 

    // credentials & cssSelector are somewhere above the file 
    outlook.signIn(credentials); 
    outlook.openEmail(cssSelector); 
    }); 

    it('should display log in',() => { 
    // some tests here 
    }); 

}); 

In meinem Terminal, meldet es SIGN IN - CLICKABLE und OPEN EMAIL - CLICKABLE, aber es zeigt auch den Fehler von openEmail - unable to click email. Ich bin verwirrt, weil browser.wait eine Zusage zurückgibt, und AFAIK eine aufgelöste Versprechen kann nicht zurückgewiesen werden.

Antwort

1

In Ihrer openEmail(email) Methode scheint Ihre el zu fehlen. Ich denke, Ihr Code sollte

function openEmail(email) { 
    _.isClickable({ 
selector: email, 
timer: 15 

}).then(el => { 
console.log('OPEN EMAIL - CLICKABLE'); 
el.click(); 

}).catch(() => { 
throw Error('unable to click email.'); 
}); 
} 
+0

Ah ja, das ist die Ursache, nur ein dummer Fehler. Vielen Dank – CRIS

Verwandte Themen