2015-12-09 2 views
1

Я сделал то, что упоминается в этом SO-вопросе, чтобы включить файл в мой тест-протранс: How to reuse code in Protractor/AngularJS Testing. Проблема в том, что методы, вызванные внутри этого включенного кода, не влияют на окно браузера, которое я вижу.Как перейти от включенного файла в Protractor?

Я создал метод входа в отдельный файл и включил его, но когда я вызываю метод из моего теста транспортира, открытый браузер просто сидит там в течение нескольких секунд, а затем продолжает, как будто я ничего не звонил. Я могу проверить, что метод вызывается с помощью console.log. Ниже приведены мои файлы кода.

login.js, включенная функция Логин:

exports.login = function() 
{ 
    console.log("Login method called"); 
    it('logs in', function() { 
     browser.get('http://my-url.com/login/'); 

     // log in to continue with checkout 
     element(by.xpath('//*[@id="login-form"]/div[1]/input')).sendKeys("username"); 
     element(by.xpath('//*[@id="login-form"]/div[2]/input')).sendKeys("password"); 
     element(by.xpath('//*[@id="login-form"]/div[3]/button')).click(); 

     // login functions on timeout 
     browser.driver.sleep(1000); 
    }); 
} 

conf.js, файл конфигурации транспортир:

exports.config = { 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: [/*'specs/overview.js',*/ 'specs/shopping-cart-state.js', 'specs/checkout-state.js', 'specs/buy-item.js'], 
    onPrepare: function() { 
     var SpecReporter = require('jasmine-spec-reporter'); 
     // add jasmine spec reporter 
     jasmine.getEnv().addReporter(new SpecReporter({ displayStacktrace: 'all' })); 
     protractor.login = require('./login.js'); 
    }, 
    jasmineNodeOpts: { 
     print: function() { }, 
     defaultTimeoutInterval: 5000000 
    } 
}; 

spec.js, тест SPEC:

describe('Log in with an included function', function() { 

    it('logs in', function() {  

     protractor.login.login(); 

     browser.driver.sleep(5000); 
    }); 
}); 

Даже если я передаю объект браузера в качестве параметра функции входа в систему, все равно ничего не происходит, и я не получаю сообщений об ошибках. Может ли кто-нибудь сказать мне, что я делаю неправильно?

ответ

0

Не заворачивайте логику внутри it() в модуле "Вход":

exports.login = function() 
{ 
    this.login = function() { 
     console.log("Login method called"); 

     browser.get('http://my-url.com/login/'); 

     // log in to continue with checkout 
     element(by.xpath('//*[@id="login-form"]/div[1]/input')).sendKeys("username"); 
     element(by.xpath('//*[@id="login-form"]/div[2]/input')).sendKeys("password"); 
     element(by.xpath('//*[@id="login-form"]/div[3]/button')).click(); 

     // login functions on timeout 
     browser.driver.sleep(1000); 
    }; 
} 
+0

Это сработало! Спасибо за быстрый ответ! – Ben

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