2016-04-27 4 views
0

Ich verwende das Winkelmesser-Framework. Ich möchte einen Test schreiben, der überprüft, ob Benutzer 1 erfolgreich Nachricht an Benutzer 2 sendet. Beide Benutzer sollten bei 2 verschiedenen Browsern angemeldet sein. Also, was ich tun möchte, ist:Zweite Browser-Instanz im Winkelmesser kann nicht auf Klassenelemente zugreifen

it("Test",() => { 
      let browser2 = browser.forkNewDriverInstance(true); 
      browser2.Chat.icon.click(); 

Auf diese Weise mag ich das Element Symbol in der Klasse Chat klicken, das wie folgt aussieht:

export class Chat{ 
public static icon: p.ElementFinder = element(by.css("#popup > div > div > div > section > header > a")); 
} 

Wenn ich versuche, das tun tun, die folgenden Fehler angezeigt: Eigenschaft Chat existiert nicht auf Typ Winkelmesser Wie kann ich auf die Elemente in den Klassen von browser2 zugreifen?

+0

Wann weisen Sie dem Objekt 'browser' die Eigenschaft' Chat' zu? In 'onPrepare()'? – alecxe

+0

Nein. Können Sie ein einfaches Beispiel mit einem Codeblock angeben? –

+0

Anstelle der Exportklasse Chat {} versuchen Sie es mit module.exports = {} – KCaradonna

Antwort

1

Also, Browser2 in Ihrem Beispiel ist eine komplett neue Instanz des Browsers. Die Elemente der Chat-Eigenschaft sind weiterhin an die anfängliche Browserinstanz (Browser) angehängt. Was für mich funktionierte, ist ein Modul zum Wechseln von Browserkontexten (und Elementen, von usw.) zu erstellen. Die zweite Antwort hier half mir sehr in die Bibliothek zu erstellen: Multiple browsers and the Page Object pattern

ich das Seite Objektmuster bin mit, so, was ich zu tun hatte, neue Seite neu instanziiert Objekte nach ich die neuen Treiber-Instanz gegabelt. So endete es in etwa so (Javascript).

var Loginpage = require('../loginPage.js); 
var loginPage = new LoginPage(); 

it('user1 logs in, sends message to user2'() => { 
    loginPage.login() 
    //send your message 
}); 

it('user2 logs in and looks for message'() => { 
    browser.forkNewDriverInstance(true); 
    var newBrowserLoginPage = new LoginPage(); 
    newBrowserLoginPage.login() 
    var newBrowserNotificationsPage = new UserNotificationsPage(); 
    newBrowserNotificationsPage.checkMessages(); 
}); 

So schlage ich die kleine Bibliothek bauen Browser Kontexten zum Schalten (und damit Element, durch, Transporteur usw. Kontexten).

Verwandte Themen