2015-06-30 20 views
8

Próbuję przetestować aplikację, która opiera się na localStorage. Wszystko działa poprawnie, gdy ręcznie wchodzę w interakcję z przeglądarką. Jednak w przypadku nightwatch.js zamiast żądanego ciągu otrzymuję odpowiedź zerową, gdy żądam localStorage. Dotyczy to zarówno Chrome, jak i Firefox.Włącz localStorage/webStorage w nightwatch.js

Już próbowałem włączyć localStore w NightWatch JSON przypisując "webStorageEnabled" : true w desiredCapabilities jak ten:

{ 
    "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 
     } 
    } 
} 

Czy localStorage ma działać podczas korzystania nightwatch.js?

Odpowiedz

2

W moim teście pracuje z localStorage, trzeba użyć polecenia „Execute” wstrzyknąć JavaScript w przeglądarce i interakcji z localStorage przeglądarki

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

To pozwoliło mi na prawidłowy utwór, chociaż w kodzie jest wypisywany w przeglądarce, a nie na konsoli. Zorientowałem się, jak go zwrócić w result.value. Dzięki! –

2

Co pracował dla mnie jest localStorage dumping na nowy Obiekt, w przeciwnym razie zwraca pustą tablicę. W ten sposób można go odczytać na stronie nocnej stacji:

client 
    .url('http://yahoo.com') 
    .execute(() => Object.assign({}, localStorage), [], (result) => { 
    console.log(result.value) 
    })