invisible-selenium 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. invisible_selenium/__init__.py +37 -0
  2. invisible_selenium/__main__.py +4 -0
  3. invisible_selenium/_behaviour.py +1278 -0
  4. invisible_selenium/_bridge.py +474 -0
  5. invisible_selenium/_engine.py +66 -0
  6. invisible_selenium/_humanize.py +69 -0
  7. invisible_selenium/_juggler/__init__.py +20 -0
  8. invisible_selenium/_juggler/_profile.py +142 -0
  9. invisible_selenium/_juggler/actions.py +1167 -0
  10. invisible_selenium/_juggler/browser.py +741 -0
  11. invisible_selenium/_juggler/connection.py +850 -0
  12. invisible_selenium/_juggler/injected.js +8119 -0
  13. invisible_selenium/_juggler/injected.py +731 -0
  14. invisible_selenium/_juggler/keyboard.py +315 -0
  15. invisible_selenium/_juggler/keylayout.py +573 -0
  16. invisible_selenium/_juggler/lifecycle.py +417 -0
  17. invisible_selenium/_juggler/protocol.py +1073 -0
  18. invisible_selenium/_motion.py +798 -0
  19. invisible_selenium/_pacing.py +438 -0
  20. invisible_selenium/_pin.py +160 -0
  21. invisible_selenium/_reaper.py +66 -0
  22. invisible_selenium/_recaptcha_seed.py +333 -0
  23. invisible_selenium/_session.py +519 -0
  24. invisible_selenium/_version.py +139 -0
  25. invisible_selenium/cli.py +153 -0
  26. invisible_selenium/common/__init__.py +0 -0
  27. invisible_selenium/common/exceptions.py +207 -0
  28. invisible_selenium/py.typed +0 -0
  29. invisible_selenium/webdriver/__init__.py +13 -0
  30. invisible_selenium/webdriver/common/__init__.py +0 -0
  31. invisible_selenium/webdriver/common/action_chains.py +287 -0
  32. invisible_selenium/webdriver/common/actions/__init__.py +0 -0
  33. invisible_selenium/webdriver/common/actions/wheel_input.py +34 -0
  34. invisible_selenium/webdriver/common/alert.py +54 -0
  35. invisible_selenium/webdriver/common/by.py +37 -0
  36. invisible_selenium/webdriver/common/keys.py +92 -0
  37. invisible_selenium/webdriver/common/timeouts.py +42 -0
  38. invisible_selenium/webdriver/common/window.py +9 -0
  39. invisible_selenium/webdriver/firefox/__init__.py +0 -0
  40. invisible_selenium/webdriver/firefox/options.py +75 -0
  41. invisible_selenium/webdriver/firefox/service.py +23 -0
  42. invisible_selenium/webdriver/firefox/webdriver.py +290 -0
  43. invisible_selenium/webdriver/remote/__init__.py +0 -0
  44. invisible_selenium/webdriver/remote/shadowroot.py +48 -0
  45. invisible_selenium/webdriver/remote/switch_to.py +69 -0
  46. invisible_selenium/webdriver/remote/webdriver.py +767 -0
  47. invisible_selenium/webdriver/remote/webelement.py +458 -0
  48. invisible_selenium/webdriver/support/__init__.py +0 -0
  49. invisible_selenium/webdriver/support/expected_conditions.py +259 -0
  50. invisible_selenium/webdriver/support/select.py +134 -0
  51. invisible_selenium/webdriver/support/ui.py +4 -0
  52. invisible_selenium/webdriver/support/wait.py +68 -0
  53. invisible_selenium-0.1.0.dist-info/METADATA +75 -0
  54. invisible_selenium-0.1.0.dist-info/RECORD +58 -0
  55. invisible_selenium-0.1.0.dist-info/WHEEL +4 -0
  56. invisible_selenium-0.1.0.dist-info/entry_points.txt +2 -0
  57. invisible_selenium-0.1.0.dist-info/licenses/LICENSE +21 -0
  58. invisible_selenium-0.1.0.dist-info/licenses/LICENSE-APACHE +202 -0
@@ -0,0 +1,37 @@
1
+ """invisible_selenium - Selenium's API for a patched Firefox with a stealth profile.
2
+
3
+ Quickstart:
4
+
5
+ from invisible_selenium import webdriver
6
+ from invisible_selenium.webdriver.common.by import By
7
+
8
+ driver = webdriver.Firefox(seed=42) # same seed, same fingerprint
9
+ driver.get("https://example.com")
10
+ driver.find_element(By.TAG_NAME, "a").click() # the pointer travels there
11
+ driver.quit()
12
+
13
+ A replica of invisible_playwright with Selenium's contract: the same engine,
14
+ the same binary, the same profile and the same human-paced input, driven over
15
+ Juggler - with no geckodriver and no Marionette.
16
+ """
17
+ # ── Import-time core assertion, and repair ───────────────────────────────────
18
+ # Runs BEFORE every other import, exactly as in invisible_playwright: is the
19
+ # installed invisible-core the version this distribution declares? A mismatch
20
+ # is repaired in place when nothing has imported the core yet. See `_pin.py`.
21
+ from ._pin import enforce_core_pin as _enforce_core_pin
22
+ _enforce_core_pin()
23
+
24
+ from invisible_core import BINARY_VERSION, FIREFOX_UPSTREAM_VERSION
25
+ from invisible_core import ensure_binary
26
+
27
+ from . import webdriver
28
+ from ._version import __install_record_version__, __version__
29
+
30
+ __all__ = [
31
+ "webdriver",
32
+ "ensure_binary",
33
+ "BINARY_VERSION",
34
+ "FIREFOX_UPSTREAM_VERSION",
35
+ "__version__",
36
+ "__install_record_version__",
37
+ ]
@@ -0,0 +1,4 @@
1
+ from .cli import main
2
+ import sys
3
+
4
+ sys.exit(main())