2015-06-30 2 views
8

Я пытаюсь протестировать приложение, основанное на localStorage. Все работает нормально, когда я взаимодействую с браузером вручную. Однако в nightwatch.js вместо нужной строки я получаю нулевой ответ при запросе localStorage. Это касается как Chrome, так и Firefox.Включить localStorage/webStorage в nightwatch.js

я уже пытался включить localStore в NightWatch JSON, назначая "webStorageEnabled" : true в desiredCapabilities, как это:

{ 
    "src_folders" : ["tests/functional/tests"], 
    "output_folder" : "tests/functional/reports", 
    "custom_commands_path" : "", 
    "custom_assertions_path" : "", 
    "globals_path" : "", 

    "selenium" : { 
    "start_process" : true, 
    "server_path" : "/Library/WebDevelopment/selenium-server/selenium-server-standalone-2.45.0.jar", 
    "log_path" : "", 
    "host" : "127.0.0.1", 
    "port" : 4444, 
    "cli_args" : { 
     "webdriver.chrome.driver" : "/usr/local/lib/node_modules/chromedriver/lib/chromedriver/chromedriver", 
     "webdriver.ie.driver" : "" 
    } 
    }, 

    "test_settings" : { 
    "default" : { 
     "launch_url" : "http://localhost", 
     "selenium_port" : 4444, 
     "selenium_host" : "localhost", 
     "silent": true, 
     "screenshots" : { 
     "enabled" : false, 
     "path" : "" 
     }, 
     "desiredCapabilities": { 
     "browserName": "chrome", 
     "webStorageEnabled" : true, 
     "databaseEnabled" : true, 
     "applicationCacheEnabled" : true, 
     "nativeEvents" : true, 
     "javascriptEnabled": true, 
     "acceptSslCerts": true 
     } 
    } 
} 

должен ли localStorage работать при использовании nightwatch.js?

ответ

2

В моем тесте работает с LocalStorage, необходимо использовать команду «Выполнить», чтобы ввести JavaScript в браузере и взаимодействовать с браузером LocalStorage

it.only('expectation', function (client) { 

    client.url('www.someurl.com').execute(function(data) { 
     try { 
      // statements 
      localStorage.pepe = 1 
      console.log('local', localStorage) 
     } catch(e) { 
      // statements 
      console.log(e); 
     } 
     return true; 
    }, [], function(result) { 
    }); 
    client.pause(0); 
}); 
+0

Это привело меня на правильный путь, хотя в вашем коде оно выдается в браузере, а не в консоли. Я понял, как вернуть его в result.value. Благодаря! –

2

То, что сработало для меня демпинг LocalStorage в новый Object, иначе он возвращает пустой массив. Таким образом, это можно прочитать обратно в Nightwatch land:

client 
    .url('http://yahoo.com') 
    .execute(() => Object.assign({}, localStorage), [], (result) => { 
    console.log(result.value) 
    }) 
Смежные вопросы