Как открыть новое окно браузера в интерне js?

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

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

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

person CodeBlooded    schedule 26.01.2017    source источник
comment
Вы пробовали window.open()?   -  person Feathercrown    schedule 26.01.2017
comment
да, я пробовал это, но я не уверен, как включить window в скрипт, потому что он выдает ошибку window is not defined.   -  person CodeBlooded    schedule 26.01.2017
comment
Хм... больше ничем не могу помочь, нет опыта стажера :P   -  person Feathercrown    schedule 26.01.2017
comment
Итак, вам нужно добавить код в свой вопрос. окно должно работать, но оно не определено в вашем скрипте. Нужно больше информации.   -  person Lajos Arpad    schedule 26.01.2017
comment
обновил мой вопрос, чтобы добавить код.   -  person CodeBlooded    schedule 26.01.2017
comment
Где/был вызов window.open?   -  person Lajos Arpad    schedule 26.01.2017
comment
нет нет . Я попытался использовать его, но получил вышеупомянутую ошибку.   -  person CodeBlooded    schedule 26.01.2017


Ответы (1)


Вы можете открыть новое окно с помощью window.open. Хитрость в том, что вы хотите запустить эту команду в удаленном браузере. Стажер (технически Лидфут) дает вам два способа сделать это на 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
person jason0x43    schedule 26.01.2017
comment
Спасибо @jason0x43 за ответ. Ваш ответ в основном открывает новую вкладку. То, что я хочу сделать, отличается от вашего ответа. Я хочу: 1. закрыть браузер при выполнении первого теста (теперь браузера нет). 2. Откройте новый браузер и выполните следующий тест. - person CodeBlooded; 27.01.2017
comment
Если вы хотите закрыть существующее окно браузера, добавьте closeCurrentWindow перед вторым getAllWindowHandles. Я предполагал, что вы захотите оставить его открытым для целей отладки. Что касается открытия новой вкладки вместо нового окна, попробуйте указать аргументы окна, например window.open('url', 'name', 'height=500,width=600'). - person jason0x43; 27.01.2017