setup-selenium-testing 0.3.0__py3-none-any.whl → 1.0.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,14 +2,12 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import errno
6
5
  import logging
7
6
  import os as os
8
7
  from enum import Enum
9
8
  from typing import TYPE_CHECKING, Optional, Union
10
9
 
11
10
  from selenium import __version__, webdriver
12
- from selenium.common.exceptions import NoSuchWindowException, WebDriverException
13
11
  from selenium.webdriver.chrome.service import Service as ChromeService
14
12
  from selenium.webdriver.common.selenium_manager import SeleniumManager
15
13
  from selenium.webdriver.edge.service import Service as EdgeService
@@ -18,7 +16,6 @@ from semantic_version import Version # type: ignore[import-untyped]
18
16
  from typing_extensions import TypeAlias
19
17
 
20
18
  if TYPE_CHECKING:
21
- from collections.abc import Mapping
22
19
 
23
20
  from selenium.webdriver import Chrome, Edge, Firefox
24
21
  from selenium.webdriver.common.options import ArgOptions
@@ -68,27 +65,10 @@ class Browser(str, Enum):
68
65
  ################################################################################
69
66
  ################################################################################
70
67
  class SetupSelenium:
71
- DIMENSIONS: Mapping[str, tuple[int, int]] = {
72
- # ratio 4:3
73
- "1024": (1024, 768),
74
- "1280": (1280, 960),
75
- "1600": (1600, 1200),
76
- "1920": (1920, 1440),
77
- # ratio 16:9
78
- "720": (1280, 720),
79
- "1080": (1920, 1080),
80
- "1440": (2560, 1440),
81
- "2160": (3840, 2160), # 4k
82
- "4320": (7680, 4320), # 8k
83
- }
84
-
85
68
  def __init__(
86
69
  self,
87
70
  browser: Browser = Browser.CHROME,
88
- baseurl: str = "",
89
- timeout: int = 15,
90
71
  headless: bool = False,
91
- window_size: str = "720",
92
72
  enable_log_performance: bool = False,
93
73
  enable_log_console: bool = False,
94
74
  enable_log_driver: bool = False,
@@ -99,11 +79,6 @@ class SetupSelenium:
99
79
  browser_path: str | None = None,
100
80
  ) -> None:
101
81
  log_path = os.path.abspath(os.path.expanduser(log_path))
102
- self.main_window_handle: str = ""
103
- self.screenshot_path: str = self.make_screenshot_path(log_path)
104
- self.log_path: str = log_path
105
- self.timeout: int = timeout
106
- self.baseurl: str = baseurl
107
82
 
108
83
  if driver_path:
109
84
  driver_path = os.path.abspath(os.path.expanduser(driver_path))
@@ -131,31 +106,6 @@ class SetupSelenium:
131
106
  driver_path=driver_path,
132
107
  )
133
108
 
134
- # driver must be setup before the following
135
- self.driver.set_window_position(0, 0)
136
- self.set_window_size(window_size)
137
- self.set_main_window_handle()
138
-
139
- ############################################################################
140
- @staticmethod
141
- def make_screenshot_path(
142
- output_dir: str = "./logs", screenshots: str = "screenshots"
143
- ) -> str:
144
- """Set the output directory for where screenshots should go."""
145
- output_dir = os.path.abspath(os.path.expanduser(output_dir))
146
- if os.path.split(output_dir)[-1].lower() != screenshots:
147
- output_dir = os.path.join(output_dir, screenshots)
148
-
149
- try:
150
- os.makedirs(output_dir)
151
- except OSError as e:
152
- if e.errno == errno.EEXIST and os.path.isdir(output_dir):
153
- pass
154
- else:
155
- raise
156
-
157
- return output_dir
158
-
159
109
  ############################################################################
160
110
  @staticmethod
161
111
  def log_options(options: ArgOptions) -> None:
@@ -637,42 +587,3 @@ class SetupSelenium:
637
587
  logger.info(bsrmsg)
638
588
  SetupSelenium.log_options(options)
639
589
  return driver
640
-
641
- ############################################################################
642
- def set_window_size(self, size: str = "720") -> None:
643
- """Helper to set the window size after driver has been instantiated."""
644
- if size == "max":
645
- self.driver.maximize_window()
646
- return
647
-
648
- width, height = SetupSelenium.DIMENSIONS.get(
649
- size, SetupSelenium.DIMENSIONS.get(size, (1280, 720))
650
- )
651
- self.driver.set_window_size(width, height)
652
-
653
- def set_main_window_handle(self, window: str | None = None) -> str:
654
- """
655
- Maintains the initial window handle as an attribute
656
-
657
- Most users will never utilize this. It's part of a legacy requirement for
658
- an old test suite
659
- """
660
- # does the main_window_handle exist and point to an available window?
661
- if not window and not self.main_window_handle:
662
- try:
663
- window = self.driver.current_window_handle
664
- except NoSuchWindowException:
665
- try:
666
- window = self.driver.window_handles[0]
667
- except WebDriverException: # noqa: TRY203
668
- # Have we closed all the windows?
669
- raise
670
- if window:
671
- self.main_window_handle = window
672
- return self.main_window_handle
673
-
674
- ############################################################################
675
- def __repr__(self) -> str:
676
- browser = self.driver.name if self.driver is not None else "NoBrowserSet"
677
- url = self.baseurl
678
- return f"{self.__class__.__name__} :: {browser} -> {url}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: setup-selenium-testing
3
- Version: 0.3.0
3
+ Version: 1.0.0
4
4
  Summary: Setup Selenium for automation testing
5
5
  License: MIT
6
6
  Author: Marcel Wilson
@@ -50,7 +50,42 @@ in every project. Time to consolidate.
50
50
  [![Build Status](https://github.com/bandophahita/setup_selenium/actions/workflows/lint.yml/badge.svg)](https://github.com/bandophahita/setup_selenium/actions/workflows/lint.yml)
51
51
 
52
52
 
53
- # Basic usage
53
+ # Instantiating SetupSelenium
54
+
55
+ This will automatically handle any downloading of drivers or browsers via `SeleniumManager`
56
+
57
+ ```python
58
+ from setup_selenium import SetupSelenium
59
+
60
+ s = SetupSelenium(headless=True)
61
+ assert s.driver.service.is_connectable()
62
+ ```
63
+
64
+ Advanced usage:
65
+
66
+ ```python
67
+ from setup_selenium import Browser, SetupSelenium
68
+
69
+ s = SetupSelenium(Browser.FIREFOX, headless=True, driver_version="118.0.5993.70")
70
+ s = SetupSelenium(Browser.CHROME, headless=True, driver_version="118.0.5993.70",
71
+ driver_path="/path/to/webdriver"
72
+ )
73
+ ```
74
+
75
+ > [!NOTE]
76
+ > Version and path arguments follow the logic of
77
+ > [SeleniumManager](https://www.selenium.dev/documentation/selenium_manager/).
78
+ > Caution is advised in cases where version and path do not match.
79
+ > See their documentation.
80
+
81
+ # Install Driver only
82
+ ```python
83
+ from setup_selenium import Browser, SetupSelenium
84
+
85
+ driver_path, browser_path = SetupSelenium.install_driver(Browser.CHROME, driver_version="118.0.5993.70")
86
+ ```
87
+
88
+ # Create driver only
54
89
 
55
90
  ```python
56
91
  from setup_selenium import Browser, SetupSelenium
@@ -58,7 +93,8 @@ from setup_selenium import Browser, SetupSelenium
58
93
  driver = SetupSelenium.create_driver(browser=Browser.CHROME, headless=True)
59
94
  ```
60
95
 
61
- # Advanced usage
96
+ Advanced usage:
97
+
62
98
  ```python
63
99
  from setup_selenium import Browser, SetupSelenium
64
100
 
@@ -75,19 +111,11 @@ driver = SetupSelenium.create_driver(
75
111
  ```
76
112
 
77
113
  > [!NOTE]
78
- > It is possible to enable the performance and console logging
114
+ > It is possible to enable the performance and console logging
79
115
  > but only for chrome based browsers. This only enables the browser ability.
80
116
  > It is up to the tester to handle logging the messages.
81
117
 
82
118
 
83
-
84
- # Driver installation
85
- ```python
86
- from setup_selenium import Browser, SetupSelenium
87
-
88
- driver_path, browser_path = SetupSelenium.install_driver(Browser.CHROME, "118.0.5993.70")
89
- ```
90
-
91
119
  # Custom logger
92
120
  ```python
93
121
  import logging
@@ -97,18 +125,6 @@ set_logger(logging.getLogger("your_custom_logger"))
97
125
  driver = SetupSelenium.create_driver(browser=Browser.CHROME, headless=True)
98
126
  ```
99
127
 
100
- # Instantiating SetupSelenium
101
- While it is possible to use the class directly caution is advised; as the class
102
- will create the driver upon instantiation.
103
-
104
- ```python
105
- from setup_selenium import SetupSelenium
106
-
107
- s = SetupSelenium(headless=True)
108
- assert s.driver.service.is_connectable()
109
- ```
110
-
111
-
112
128
  # Automatic driver and browser installation
113
129
  This package not only handles setup of the webdriver but also will
114
130
  automatically install the webdriver and/or browser depending on your
@@ -0,0 +1,7 @@
1
+ setup_selenium/__init__.py,sha256=-w9Vvo72ZLaEyIEfc_Nh0bDDJz9W0pOy4rkRXurIJHI,63
2
+ setup_selenium/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ setup_selenium/setup_selenium.py,sha256=6IijZ0maMo7t3_W1vUyn0l2SnEi8vsZoVZRUeQmu5kA,21834
4
+ setup_selenium_testing-1.0.0.dist-info/LICENSE,sha256=KGdE-1D1chm3UNFtfE8x-EpVxhmv2zFx8oltbO8M1qE,1070
5
+ setup_selenium_testing-1.0.0.dist-info/METADATA,sha256=N0t4a2Zf4wGPcc6lVTtdpFDlSDQ2QsgCUF1lhsP6Kjs,5847
6
+ setup_selenium_testing-1.0.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
7
+ setup_selenium_testing-1.0.0.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- setup_selenium/__init__.py,sha256=-w9Vvo72ZLaEyIEfc_Nh0bDDJz9W0pOy4rkRXurIJHI,63
2
- setup_selenium/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- setup_selenium/setup_selenium.py,sha256=WyYo_VsqD_Z5wo54K_B8FfXRzNCyd6M9Nw1kqkFPH3k,25170
4
- setup_selenium_testing-0.3.0.dist-info/LICENSE,sha256=KGdE-1D1chm3UNFtfE8x-EpVxhmv2zFx8oltbO8M1qE,1070
5
- setup_selenium_testing-0.3.0.dist-info/METADATA,sha256=JQ7bnIg03oQ-7rez5TjR-Bg_9eN7ub66LD8PK6WZMxA,5305
6
- setup_selenium_testing-0.3.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
7
- setup_selenium_testing-0.3.0.dist-info/RECORD,,