2013-11-18 5 views
14

Я не могу получить PhantomJS через тест успешно. Я попытался интегрировать его в свой проект, но после этого я попытался просто запустить основные образцы угловых документов, и я получаю ту же проблему. Мои шаги:Эксплуатационные испытания протокатора на PhantomJS

  • npm install -g phantomjs
  • phantomjs --webdriver=9515 // ... GhostDriver - Главное - на порту 9515
  • protractor protractorConf.js

Это тот же файл из примера только с browserName , и селенАдрес порт изменен:

// An example configuration file. 
exports.config = { 
    // The address of a running selenium server. 
    seleniumAddress: 'http://localhost:9515', 

    // Capabilities to be passed to the webdriver instance. 
    capabilities: { 
    'browserName': 'phantomjs' 
    }, 

    // Spec patterns are relative to the current working directly when 
    // protractor is called. 
    specs: ['onProtractorRunner.js'], 

    // Options to be passed to Jasmine-node. 
    jasmineNodeOpts: { 
    showColors: true, 
    } 
}; 

Я получаю следующее сообщение об ошибке:

UnknownError: Error Message => 'Detected a page unload event; asynchronous script execution does not work across page loads.' 

Я нашел this issue on github, который, казалось, связаны между собой. Я думал, что я достаточно понял их brower-setup.md, чтобы включить его в одну из моих функций beforeEach. Тогда я нашел hereptor - это просто упаковка драйвера в любом случае. Ничего себе, я знаю, что я здесь noob здесь, в области транспортира/селена, но отношение сигнал-шум интенсивно сдерживается. Мне бы очень хотелось получить преимущества от использования PhantomJS, но перспектива потерять еще несколько часов на этом вредит моей голове. Я нахожусь в Windows 7 Enterprise 64-bit, в случае, если это имеет значение. Благодаря!

+0

Связанный: http://stackoverflow.com/questions/30086961/using-protractor-with-phantomjs – alecxe

ответ

3

Acutally это исправление было решить тот же вопрос для меня:

https://github.com/pschwartau/protractor/commit/1eeff8b1b2e3e8f3b7c8152264411f26d4665a07

Как первоначально описано здесь: https://github.com/angular/protractor/issues/85#issuecomment-26846255 по renanmartins


Внутри транспортир/Lib/protractor.js Заменить

this.driver.get('about:blank'); 
this.driver.executeScript(
    'window.name = "' + DEFER_LABEL + '" + window.name;' + 
    'window.location.href = "' + destination + '"'); 

с

var driver = this.driver; 
    this.getCapabilities().then(function (capabilities) { 
    if (capabilities.caps_.browserName === 'phantomjs') { 
     driver.executeScript('window.name = "' + DEFER_LABEL + '" + window.name;'); 
     driver.get(destination); 
    } else { 
     driver.get('about:blank'); 
     driver.executeScript(
      'window.name = "' + DEFER_LABEL + '" + window.name;' + 
      'window.location.href = "' + destination + '"'); 
    } 

    // Make sure the page is an Angular page. 
    driver.executeAsyncScript(clientSideScripts.testForAngular, 10). 
     then(function(hasAngular) { 
     if (!hasAngular) { 
      throw new Error('Angular could not be found on the page ' + 
       destination); 
     } 
     }); 
    }); 
+4

Исправление для этого приземлились в мастер транспортир часов назад, должно быть, не проблема в транспортир> 0,16. 1 – peritus

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