-
-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Based on Zendriver's get_local_storage/set_local_storage, reimplement it in kdriver:
class Tab:
async def get_local_storage(self):
"""
get local storage items as dict of strings (careful!, proper deserialization needs to be done if needed)
:return:
:rtype:
"""
if self.target is None or not self.target.url:
await self.wait()
# there must be a better way...
origin = "/".join(self.url.split("/", 3)[:-1])
items = await self.send(
cdp.dom_storage.get_dom_storage_items(
cdp.dom_storage.StorageId(is_local_storage=True, security_origin=origin)
)
)
retval = {}
for item in items:
retval[item[0]] = item[1]
return retval
async def set_local_storage(self, items: dict):
"""
set local storage.
dict items must be strings. simple types will be converted to strings automatically.
:param items: dict containing {key:str, value:str}
:type items: dict[str,str]
:return:
:rtype:
"""
if self.target is None or not self.target.url:
await self.wait()
# there must be a better way...
origin = "/".join(self.url.split("/", 3)[:-1])
await asyncio.gather(
*[
self.send(
cdp.dom_storage.set_dom_storage_item(
storage_id=cdp.dom_storage.StorageId(
is_local_storage=True, security_origin=origin
),
key=str(key),
value=str(val),
)
)
for key, val in items.items()
]
)Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request