2016-04-27 2 views
0

Я использую структуру транспортира. Я бы хотел написать тестовую проверку, если пользователь 1 успешно отправит сообщение пользователю 2. Оба пользователя должны войти в систему в двух разных браузерах. Итак, что я хочу сделать, это:Второй экземпляр браузера в транспортир не может получить доступ к элементам класса

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

Таким образом, я хочу, чтобы нажать на значок элемента в классе чат, который выглядит как:

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

Когда я пытаюсь сделать это сделать следующее ошибка: Свойство Чат не существует на типе Protractor Как я могу получить доступ к элементам в классах из браузера2?

+0

Когда вы назначаете свойство 'Chat' объекту' browser'? В 'onPrepare()'? – alecxe

+0

Нет. Можете ли вы привести простой пример с блоком кода? –

+0

Вместо класса экспорта Чат {} попробуйте использовать module.exports = {} – KCaradonna

ответ

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(); 
}); 

Итак, я предлагаю строить небольшую библиотеку для переключения контекста браузера (и, следовательно, элемента, с помощью транспортира, и т.д. контекстов).

Смежные вопросы