从 Splinter 访问和管理本地存储?

Access and manage local storage from Splinter?

我想在本地存储中检索、管理和存储数据。

splinter 中有 API 吗?

我假设如果你的 splinter 上的驱动程序能够执行 java 脚本,你可以这样做(我在 selenium 中使用过):

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)

我去年学习这项技术的原 post 是 here

splinter 没有可用的存储空间 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()