Quel est l'équivalent de:Comment obtenir le localStorage avec Python et Sélénium WebDriver
driver.get_cookies()
pour obtenir le localStorage au lieu des cookies?
Quel est l'équivalent de:Comment obtenir le localStorage avec Python et Sélénium WebDriver
driver.get_cookies()
pour obtenir le localStorage au lieu des cookies?
Je résolus à l'aide:
driver.execute_script("window.localStorage;")
EDIT: ceci est une réponse rapide et courte. Voir la réponse de Florent B. pour une réponse plus détaillée.
Essayez:
driver.execute_script("window.localStorage.setItem('key','value');");
driver.execute_script("window.localStorage.getItem('key');");
Voir la réponse à la question Getting the return value of Javascript code in Selenium.
Fondamentalement, vous avez besoin de faire quelque chose comme ce qui suit:
from selenium import webdriver
wd = webdriver.Firefox()
wd.get("http://localhost/foo/bar")
wd.execute_script("return localStorage.getItem('foo')")
L'API python ne fournit pas un moyen de lire directement/écrire le stockage local, mais il peut être fait avec execute_script
.
import json
class LocalStorage:
def __init__(self, driver):
self.driver = driver
def set(self, key, value):
self.driver.execute_script(\
"window.localStorage.setItem('{}',{})".format(key, json.dumps(value)))
def get(self, key=None):
if key:
return self.driver.execute_script(\
"return window.localStorage.getItem('{}')".format(key))
else:
return self.driver.execute_script("""
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.driver.execute_script(\
"window.localStorage.removeItem('{}');".format(key))
def clear(self):
self.driver.execute_script(\
"window.localStorage.clear();")
Exemple d'utilisation:
# get the local storage
storage = LocalStorage(driver)
# set an item
storage.set("mykey", 1234)
# get an item
print(storage.get("mykey"))
# remove an item
storage.remove("mykey")
# get all items
for key, value in storage.get().items():
print(key + ': ' + value)
# delete all items
storage.clear()