Я хотел бы получить, управлять и хранить данные в локальном хранилище.Доступ и управление локальным хранилищем от Splinter?
Есть ли API для этого в осколке?
Я хотел бы получить, управлять и хранить данные в локальном хранилище.Доступ и управление локальным хранилищем от Splinter?
Есть ли API для этого в осколке?
Там нет API для хранения доступны с осколком, но вы можете создать свой собственный с evaluate_script и 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();")
Использование:
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()
Я полагаю, что если ваш водитель на осколок способен выполнять Java-скрипт, вы можете сделать что-то вроде этого (я использовал его в селен):
from selenium import webdriver
driver = webdriver.Firefox()
url='http://xxx.xxx.xxx/'
driver.get(url)
scriptArray="""return Array.apply(0, new Array(localStorage.length)).map(function (o, i) { return localStorage.getItem(localStorage.key(i)); }
)"""
result = driver.execute_script(scriptArray)
print(result)
оригинальный пост, откуда я узнаю это техника последние годы here.