2015-06-06 2 views
1

Я использую nightwatch для тестирования своего приложения javascript. Мне нужно иметь возможность запускать кросс-браузерные тесты на локальном компьютере. Chrome и Firefox ОК, но при запуске теста на IE, я получил сообщение об ошибке:nightwatch.js internet explorer

Running: google.com 
    TypeError: undefined is not a function 
    at pass (C:\Users\Dávid\AppData\Roaming\npm\node_modules\nightwatch\lib\api\ 
assertions\urlContains.js:23:18) 
    at Object.<anonymous> (C:\Users\Dávid\AppData\Roaming\npm\node_modules\night 
watch\lib\core\assertion.js:94:23) 
    at HttpRequest.<anonymous> (C:\Users\Dávid\AppData\Roaming\npm\node_modules\ 
nightwatch\lib\index.js:299:20) 
    at HttpRequest.emit (events.js:110:17) 
    at HttpRequest.<anonymous> (C:\Users\Dávid\AppData\Roaming\npm\node_modules\ 
nightwatch\lib\index.js:346:15) 
    at HttpRequest.emit (events.js:118:17) 
    at IncomingMessage.<anonymous> (C:\Users\Dávid\AppData\Roaming\npm\node_modu 
les\nightwatch\lib\http\request.js:150:16) 
    at IncomingMessage.emit (events.js:129:20) 
    at _stream_readable.js:908:16 
    at process._tickCallback (node.js:355:11) 

IEDriverServer в версии 2.45.0, используемый селен. Я использую x64 версию на 64b Windows 8.1. И я уже сделал реестр для IE11.

Тестовый файл:

module.exports = { 
    'google.com': function(browser){ 
     return browser 
      .url('www.google.com') 
      .pause(5000) 
      .assert.urlContains('google') 
      .end(); 
    } 
} 

nightwatch.json:

{ 
    "src_folders" : ["./tests/e2e"], 
    "output_folder" : "./tests/reports", 
    "custom_assertions_path" : "", 
    "globals_path" : "", 
    "live_output" : false, 
    "parallel_process_delay" : 10, 
    "disable_colors": false, 

    "selenium" : { 
     "start_process" : true, 
     "server_path" : "./bin/selenium-server-standalone-2.45.0.jar", 
     "log_path" : "", 
     "host" : "127.0.0.1", 
     "port" : 4444, 
     "cli_args" : { 
     "webdriver.chrome.driver" : "", 
     "webdriver.ie.driver" : "./bin/IEDriverServer.exe", 
     "webdriver.firefox.profile" : "" 
    } 
}, 

"test_settings" : { 
    "default" : { 
     "launch_url" : "http://localhost:3001", 
     "selenium_host" : "127.0.0.1", 
     "selenium_port" : 4444, 
     "silent" : true, 
     "disable_colors": false, 
     "screenshots" : { 
      "enabled" : false, 
      "path" : "" 
     }, 
     "desiredCapabilities" : { 
      "browserName" : "firefox", 
      "javascriptEnabled" : true, 
      "acceptSslCerts" : true 
     } 
    }, 
    "chrome": { 
     "desiredCapabilities" : { 
      "browserName" : "chrome", 
      "javascriptEnabled" : true, 
      "acceptSslCerts" : true 
     } 
    }, 
    "ie": { 
     "desiredCapabilities": { 
      "browserName" : "internet explorer", 
      "javascriptEnabled" : true, 
      "acceptSslCerts" : true 
     } 
    } 
} 

команда запуска:

nightwatch --env ie 

Это не будет работать на этой линии:

.assert.urlContains('google') 

Для всех помощь заранее спасибо.

ответ

2

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

0

Я пробовал ваш тест, и он отлично работает на моем ноутбуке с Nightwatch v0.6.13. Какую версию Nighwatch вы используете? (npm list nightwatch -g)

+0

nightwatch v0.6.13. Вы копировали все, включая nighwatch.json? Какую версию селена вы использовали? – DSDev7

3

Я вижу, что у вас есть решение, но, пройдя через это, я подумал, что оставлю это здесь для будущих людей.

Selenium docs сказать Internet Explorer требует определенной конфигурации

  • IEDriverServer должна быть в пути. Мой опыт показывает, что с помощью% PATH% удивительно слоеное, и я либо:

    • установить webdriver.ie.driver на пути в cli_args из nightwatch.json
    • запустить Selenium сервер вручную с java -jar selenium-server-standalone-2.47.1.jar -Dwebdriver.ie.driver=.\IEDriverServer.exe
  • Защищенный режим в IE (Инструменты> Свойства обозревателя> Безопасность) должен быть одинаковым для всех зон (как вы уже нашли!). Я часто тестирую локально и на виртуальных машинах, поэтому я включил его для Local и Trusted, а не отключил его для зоны Интернета.

  • Установить увеличение на 100% (хотя, вы знаете, почему бы не быть?)

  • Для IE10 +, Enhanced Protected Mode должна быть отключена (Сервис> Свойства обозревателя> Дополнительно> Безопасность). Довольно точно это отключено по умолчанию в клиентских версиях Windows, но включено на серверных версиях.

  • Для IE11 + выполните процедуру reghack, чтобы упростить соединение между сервером селена и экземпляром браузера.В HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE добавьте DWORD для iexplore.exe и установите его на 0. Если вы используете 64-битные окна, этот путь будет HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE.

Один дополнительный из моего опыта:

  • Если вы на 64-битных Windows, не соблазниться 64-битном IEDriverServer. Это медленно. «Медленнее, чем старушка перед вами в банкомате».
+0

эй Я пытаюсь запустить тесты селена в IE-драйвере, у меня возникают проблемы, особенно при нажатии на элементы, когда nativeEvents установлен в true. Как выглядит ваша конфигурация при тестировании в IE? – Jasmine

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