量角器中的第二个浏览器实例无法访问类的元素

时间:2016-04-27 08:14:03

标签: protractor multiple-instances

我正在使用量角器框架。我想写一个测试检查用户1是否成功向用户2发送消息。两个用户都应该在两个不同的浏览器上登录。所以,我想做的是:

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

这样我想点击Chat类中的元素图标,如下所示:

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

当我尝试这样做时,会出现以下错误:类型量角器上不存在属性聊天 如何从browser2访问类中的元素?

1 个答案:

答案 0 :(得分:1)

因此,您的示例中的browser2是一个全新的浏览器实例。 Chat属性上的元素仍附加到初始浏览器实例(浏览器)。对我有用的是创建一个用于切换浏览器(以及元素,依据等)上下文的模块。这里的第二个答案帮助我创建了这个库:Multiple browsers and the Page Object pattern

我正在使用页面对象模式,所以我必须做的是重新实例化新的页面对象 之后我分叉了新的驱动程序实例。所以它最终结束了(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();
});

所以,我建议建立一个小型库来切换浏览器上下文(因此也就是元素,by,protractor等等。)