2016-06-22 13 views
1

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

В моем тесте я сначала направил браузер на страницу входа в систему и после ввода пользователя и пароля я делаю еще browser.get действие, которое ссылается на меня на другую страницу.

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

Я попробовал версии firefox: 27.0.1, 28.0, 42.0, 45.0.1 и 46.0.1 (все 32-разрядные версии), все версии показывают одинаковое поведение. Версия webdriver-manager - 10.0.4, версия selenium webdriver - 2.53, os win8.1 64 бит и версия транспортира 3.1.1.

При выполнении того же теста в браузере Chrome, как и следовало ожидать, он ждет завершения регистрации и только затем переходит к следующему блоку, который выполняет действие browser.get.

Мой файл конф:

var HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter'); 
    var path = require('path'); 

    exports.config = { 
     framework: 'jasmine2', 
     seleniumAddress: 'http://localhost:4444/wd/hub', 
     specs: ['multiTestRun.js'], 
     getPageTimeout: 60000, 
     rootElement: '[ng-app]', 
     jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeoutInterval: 10000000, 
     isVerbose: true, 
     includeStackTrace: true 
     }, 
     params: { 
     test: 'Regression', 
     resources: 3, 
     locations: 4, 
     skills: 2, 
     services: 0, 
     useNameSpace: 0 
     }, 
     capabilities: { 
     'browserName': 'firefox' 
     }, 
     onPrepare: function(){ 
    var dest = path.normalize('./Results'); 
    browser.manage().timeouts().setScriptTimeout(120000); 
    jasmine.getEnv().addReporter(
     new HtmlScreenshotReporter({ 
      dest: dest, 
      filename: 'my-report.html', 
      showQuickLinks: true, 
      reportOnlyFailedSpecs: false, 
      captureOnlyFailedSpecs: true, 
      restartBrowserBetweenTests: true 
     }) 
    ); 

    global.isAngularSite = function(flag){ 
     browser.ignoreSynchronization = !flag; 
    }; 
    browser.driver.manage().window().maximize(); 
    } 
    }; 

Мой код файла:

describe('test', function() { 

beforeEach(function(){ 
    isAngularSite(false); 
}, 60000); 

it('it1', function() { 
    browser.get('https://example.com/'); 
    element(By.id('username')).clear(); 
    element(By.id('username')).sendKeys('[email protected]'); 
    element(By.id('password')).clear(); 
    element(By.id('password')).sendKeys('1234.org'); 
    element(By.id('Login')).click(); 
}); 

it('it2', function() { 
    browser.get('https://example.com/SecondPage'); 
    browser.get('https://example.com/SecondPage'); 

    browser.executeScript('return RemoteActions;') 
    .then(function(remoteAction) { 
     console.log('remoteAction.doAction'); 
     console.log(remoteAction.doAction); 
     browser.executeAsyncScript(function(remoteAction) { 
      var callback = arguments[arguments.length - 1]; 
      Visualforce.remoting.Manager.invokeAction(remoteAction.doAction, function (res, ev) { 
       callback(res); 
      }, { buffer: false, escape: false, timeout: 10000 }); 
     },remoteAction).then(function(res) { 
      console.log(res); 
     }); 
    }); 
}); 

любые советы?

+0

Обновленный вопрос с тестом, что cuases вопрос с светлячок – user3475306

ответ

1

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

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

element(By.id('Login')).click(); 
browser.wait(function() { 
    element(By.id('Login')).isDisplayed().then(function(loginButtonIsDisplayed) { 
     // break out of the loop by returning 'true' when the login button is not displayed 
     return !loginButtonIsDisplayed; 
), browser.getPageTimeout, 'after clicking the login button, the next page did not load within ' + browser.getPageTimeout + 's'}; 
browser.get('https://example.com/SecondPage'); 

browser.getPageTimeout является транспортир тайм-аут, который установлен на 10 секунд по умолчанию

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