11import os
22from abc import ABC , abstractmethod
3-
43from selenium import webdriver
54from selenium .webdriver .chrome .service import Service as ChromeService
65from selenium .webdriver .remote .remote_connection import RemoteConnection
76from webdriver_manager .chrome import ChromeDriverManager
8-
97from core .driver_options import _init_driver_options
108from utils .error_handler import ErrorHandler , ErrorType
119from utils .logger import Logger , LogLevel
@@ -31,9 +29,9 @@ def _get_driver_path(driver_type=None):
3129
3230def _configure_driver (driver , environment ):
3331 driver .maximize_window ()
34- driver .implicitly_wait (15 )
32+ driver .implicitly_wait (3 )
3533 driver .get (Properties .get_base_url (environment ))
36- log .info (f"Local Chrome driver created with session : { driver } " )
34+ log .info (f"Configure driver and base url : { Properties . get_base_url ( environment ) } " )
3735
3836
3937class Driver (ABC ):
@@ -43,28 +41,32 @@ def create_driver(self, environment, dr_type):
4341
4442 def get_desired_caps (self , browser = "chrome" ):
4543 caps = YAMLReader .read_caps (browser )
46- log .info (f"capabilities for driver { caps } " )
44+ log .info (f"Capabilities for driver { caps } " )
4745 return caps
4846
4947
5048class LocalDriver (Driver ):
51- def create_driver (self , environment = None , dr_type = None ):
49+ def create_driver (self , environment = None , dr_type = "local" ):
5250 """Tries to use ChromeDriverManager to install the latest driver,
5351 and if it fails, it falls back to a locally stored driver in resources."""
52+ driver = None
5453 try :
55- log .info (f"Run local chrome driver with { _init_driver_options ()} " )
5654 driver_path = ChromeDriverManager ().install ()
55+ options = _init_driver_options (dr_type = dr_type )
5756 driver = webdriver .Chrome (
5857 service = ChromeService (executable_path = driver_path ),
59- options = _init_driver_options (dr_type = dr_type ))
58+ options = options
59+ )
60+ log .info (
61+ f"Created local Chrome driver with session: { driver .session_id } " )
6062 except Exception as e :
61- log .info (f"Run local driver: { e } " )
63+ log .error (
64+ f"Failed to create Chrome driver, falling back to local driver: { e } " )
6265 driver = webdriver .Chrome (
6366 service = ChromeService (_get_driver_path (dr_type )),
6467 options = _init_driver_options (dr_type = dr_type ),
6568 )
6669 _configure_driver (driver , environment )
67- log .info (f"Local Chrome driver created with session: { driver } " )
6870 return driver
6971
7072
@@ -75,19 +77,23 @@ def create_driver(self, environment=None, dr_type=None):
7577 command_executor = RemoteConnection ("your remote URL" ),
7678 desired_capabilities = {"LT:Options" : caps }, # noqa
7779 )
78- log .info (f"Local Chrome driver created with session: { driver } " )
80+ log .info (
81+ f"Remote Chrome driver created with session: { driver .session_id } " )
7982 return driver
8083
8184
8285class FirefoxDriver (Driver ):
8386 def create_driver (self , environment = None , dr_type = None ):
8487 try :
85- driver = webdriver .Firefox (options = _init_driver_options (dr_type ))
88+ driver = webdriver .Firefox (
89+ options = _init_driver_options (dr_type = dr_type ))
90+ log .info (f"Created Firefox driver with session: { driver .session_id } " )
8691 except Exception as e :
8792 driver = webdriver .Chrome (
8893 service = ChromeService (_get_driver_path (dr_type )),
89- options = _init_driver_options (),
94+ options = _init_driver_options (dr_type = dr_type ),
9095 )
91- log .error (f"Run local firefox driver: { e } " )
96+ log .error (
97+ f"Failed to create Firefox driver, falling back to Chrome: { e } " )
9298 _configure_driver (driver , environment )
9399 return driver
0 commit comments