我正在使用量角器框架。我想写一个测试检查用户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访问类中的元素?
答案 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等等。)