I would like to retrieve, manage and store data in local storage.
Is there an API for that in splinter?
There's no storage API available with splinter, but you can build your own with evaluate_script and execute_script :
import json
from splinter import Browser
class LocalStorage:
def __init__(self, browser):
self.browser = browser
def set(self, key, value):
self.browser.execute_script(\
"window.localStorage.setItem('{}',{})".format(key, json.dumps(value)))
def get(self, key):
return self.browser.evaluate_script(\
"window.localStorage.getItem('{}')".format(key));
def get_all(self):
return self.browser.evaluate_script("""(function(){
var items = {}, ls = window.localStorage;
for (var i = 0, k; i < ls.length; i++)
items[k = ls.key(i)] = ls.getItem(k);
return items;
})()""")
def remove(self, key):
self.browser.execute_script(\
"window.localStorage.removeItem('{}');".format(key));
def clear(self):
self.browser.execute_script(\
"window.localStorage.clear();")
Usage example:
from splinter import Browser
browser = Browser()
browser.visit("http://mdn.github.io/web-storage-demo")
# get the local storage
storage = LocalStorage(browser)
# get an item
print storage.get("bgcolor")
# set an item
storage.set("size", 452)
# remove an item
storage.remove("size")
# get all items
for key, value in storage.get_all().iteritems():
print key + ': ' + value
# delete all items
storage.clear()