{"id":22348,"library":"seletools","title":"Selenium Tools","description":"A helper library for Selenium providing additional utilities such as IndexedDB interaction, local storage manipulation, drag & drop bypass, scrolling support, and webdriver wait getter. Current version is 1.5.0, released in 2024. Maintenance cadence is irregular with minor improvements and dependency updates.","status":"active","version":"1.5.0","language":"python","source_language":"en","source_url":"https://github.com/bormando/selenium-tools","tags":["selenium","testing","webscraping","automation","utilities"],"install":[{"cmd":"pip install seletools","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core dependency for browser automation","package":"selenium","optional":false}],"imports":[{"note":"Package name is seletools, not selenium-tools","wrong":"from selenium_tools import Seletools","symbol":"Seletools","correct":"from seletools import Seletools"},{"note":"","wrong":"","symbol":"IndexedDB","correct":"from seletools.indexed_db import IndexedDB"},{"note":"","wrong":"","symbol":"LocalStorage","correct":"from seletools.local_storage import LocalStorage"},{"note":"","wrong":"","symbol":"Scrolling","correct":"from seletools.scrolling import Scrolling"},{"note":"","wrong":"","symbol":"DragAndDrop","correct":"from seletools.drag_and_drop import DragAndDrop"}],"quickstart":{"code":"from selenium import webdriver\nfrom seletools.actions import Seletools\n\ndriver = webdriver.Chrome()\ndriver.get('https://example.com')\n\ntools = Seletools(driver)\n# Example: scroll to bottom\ntools.scroll_to_bottom()\n\n# Example: drag & drop bypass\ntools.drag_and_drop(source_element, target_element)\n\ndriver.quit()","lang":"python","description":"Initialize Seletools with a Selenium WebDriver instance to use utility methods."},"warnings":[{"fix":"Set driver.implicitly_wait(0) before IndexedDB operations if you want single iteration.","message":"IndexedDB get method may hang if webdriver implicit_wait is not set. In version <1.2.1, it would execute multiple iterations unnecessarily. Set implicit_wait explicitly.","severity":"gotcha","affected_versions":"<1.2.1"},{"fix":"Ensure the page is loaded over HTTPS and wait for page readiness before calling storage methods.","message":"Local storage and IndexedDB methods require the page to be fully loaded and may throw errors on non-secure contexts (http vs https). Use on pages served over HTTPS.","severity":"gotcha","affected_versions":"all"},{"fix":"Import specific modules (e.g., from seletools.scrolling import Scrolling) for direct access.","message":"The main Seletools class exposes all utilities. Some methods may be deprecated in future releases as separate module imports become preferred.","severity":"deprecated","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"pip install seletools","cause":"Package not installed or installed with wrong name (e.g., 'selenium-tools').","error":"ModuleNotFoundError: No module named 'seletools'"},{"fix":"Instantiate Seletools(driver) explicitly: from seletools.actions import Seletools; tools = Seletools(driver)","cause":"Attempting to access seletools as an attribute of the driver.","error":"AttributeError: 'WebDriver' object has no attribute 'seletools'"},{"fix":"Ensure the page is loaded over HTTPS or localhost, and the browser supports IndexedDB.","cause":"IndexedDB is unavailable in the current browser context (e.g., file:// protocol or non-secure context).","error":"selenium.common.exceptions.JavascriptException: Message: ReferenceError: indexedDB is not defined"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}