2017-01-26 4 views
0

Я автоматизирую проверку пользовательского интерфейса моего приложения. Есть некоторые случаи, когда я хочу, чтобы мой тестовый скрипт закрывал текущий браузер и запускал следующий тест, открывая новый браузер. Проблема в том, что я не могу понять, как открыть новое окно браузера в стажере. remote.get(URL) не делает то, что я хочу сделать здесь. Может кому-то помочь.Как открыть новое окно браузера в intern js?

Я обновил свой вопрос, чтобы включить код. Однако мой вопрос довольно прост. Как открыть новое окно браузера, используя стажер из внутреннего теста?. хотя, если вы хотите увидеть код, прокомментируйте, я его запишу. Спасибо.

 // in tests/functional/index.js 
define([ 
'intern!object', 
'intern/chai!assert', 
'Automation/ConfigFiles/dataurl', 
'Automation/pages/login/loginpage', 
'intern/dojo/node!fs', 
'intern/dojo/node!leadfoot/helpers/pollUntil' 
    ], function (registerSuite, assert, dataurl, LoginPage, fs, pollUntil) { 
registerSuite(function() { 
    var loginPage; 
    var values; 
    return { 
     setup: function() { 
      var data = fs.readFileSync(loginpage, 'utf8'); 
      json = JSON.parse(data); 
      values = json.values; 
      loginPage = new LoginPage(this.remote, json.locator); 
      return this.remote 
      .get(require.toUrl(json.locator.URL)).setFindTimeout(60000000000).sleep(5000) 
     }, 

     beforeEach:function() { 
      // here i want to open new window 

     }, 

     'valid loginname lands to password page':function() { 
      loginPage.submitLoginName(values.unamevalue); 
      loginPage.isPasswordPageDisplayed().then(function(isPasswordPageDisplayed) { 
       assert.true(isPasswordPageDisplayed, 'password page is not displayed, Invalid Login name'); 
      }) 
     }, 

     'successful login': function() { 
      loginPage 
       .login(values.unamevalue, values.pwdvalue) 
      loginPage.isLoginSuccess().then(function (loginSuccess) { 
       assert.isTrue(loginSuccess, 'Login Failed'); 
      }); 
     }, 
     afterEach: function() { 
      return this.remote.closeCurrentWindow() 
     } 
    }; 
    }); 
}); 
+0

Вы пробовали 'window.open()'? – Feathercrown

+0

Да, я пробовал это, но я не уверен, как включить 'window' в скрипт, потому что он дает ошибку' window not defined'. – CodeBlooded

+0

Хмм ... не может помочь здесь намного больше, чем нет, нет опыта работы на стажем: P – Feathercrown

ответ

2

Вы можете открыть новое окно с кодом window.open. Фокус в том, что вы хотите запустить эту команду в удаленном браузере. Intern (технически Leadfoot) дает вам два метода для этого: this.remote: execute и executeAsync. Например, чтобы просто открыть новое окно, вы можете сделать:

this.remote.execute(function() { 
    window.open(); 
}) 

После того, как вы открыли новое окно, нужно переключиться на него, чтобы взаимодействовать с ним. Сценарий может выглядеть примерно так:

var windowHandles; 
this.remote 
    .getAllWindowHandles() 
    .then(function (handles) { 
     windowHandles = handles; 
    }) 
    .execute(function() { window.open() }) 
    .sleep(500) 
    .getAllWindowHandles() 
    .then(function (handles) { 
     // compare the new handles to windowHandles to figure out which 
     // is the new window, then switch to it 
     return this.remote.switchToWindow(newWindowHandle); 
    }) 

    .get('some_new_url') 
    // rest of test 
+0

Спасибо @ jason0x43 за ответ. Ваш ответ в основном открывает новую вкладку. То, что я хочу сделать, отличается от вашего ответа. Я хочу: 1. закрыть браузер, когда выполняется первый тест (теперь нет браузера). 2. Откройте новый браузер и выполните следующий тест. – CodeBlooded

+0

Если вы хотите закрыть существующее окно браузера, добавьте 'closeCurrentWindow' перед вторым' getAllWindowHandles'. Я предположил, что вы захотите оставить его открытым для целей отладки. Что касается открытия новой вкладки в новом окне, попробуйте указать аргументы окна, например 'window.open ('url', 'name', 'height = 500, width = 600')'. – jason0x43

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