@@ -66,11 +66,10 @@ def get_error_message_from_traceback(traceback):
6666
6767
6868class ConfigDriver (object ):
69- def __init__ (self , config , utils = None , playwright = None ):
69+ def __init__ (self , config , utils = None ):
7070 self .logger = logging .getLogger (__name__ )
7171 self .config = config
7272 self .utils = utils
73- self .playwright = playwright
7473
7574 def create_driver (self ):
7675 """Create a selenium driver using specified config properties
@@ -93,36 +92,6 @@ def create_driver(self):
9392
9493 return driver
9594
96- def create_playwright_browser (self ):
97- """
98- Create a playwright browser using specified config properties
99-
100- :returns: a new playwright browser o persistent browser context
101- """
102- driver_type = self .config .get ('Driver' , 'type' )
103- try :
104- self .logger .info ("Creating playwright driver (type = %s)" , driver_type )
105- return self ._create_playwright_browser ()
106- except Exception as exc :
107- error_message = get_error_message_from_exception (exc )
108- self .logger .error ("%s driver can not be launched: %s" , driver_type .capitalize (), error_message )
109- raise
110-
111- def create_playwright_persistent_browser_context (self ):
112- """
113- Create a playwright persistent browser context using specified config properties
114-
115- :returns: a new playwright persistent browser context
116- """
117- driver_type = self .config .get ('Driver' , 'type' )
118- try :
119- self .logger .info ("Creating playwright persistent context (type = %s)" , driver_type )
120- return self ._create_playwright_persistent_browser_context ()
121- except Exception as exc :
122- error_message = get_error_message_from_exception (exc )
123- self .logger .error ("%s driver can not be launched: %s" , driver_type .capitalize (), error_message )
124- raise
125-
12695 def _create_remote_driver (self ):
12796 """Create a driver in a remote server
12897 View valid capabilities in https://www.selenium.dev/documentation/webdriver/drivers/options/
@@ -195,76 +164,6 @@ def _create_local_driver(self):
195164
196165 return driver
197166
198- def _create_playwright_browser (self ):
199- """Create a browser in local machine using Playwright
200-
201- :returns: a new browser Playwright
202- """
203- driver_name = self .utils .get_driver_name ()
204- if driver_name in ('android' , 'ios' , 'iphone' ):
205- raise Exception ('Playwright does not support mobile devices' )
206- else :
207- if driver_name in ['chrome' , 'chromium' ]:
208- browser = self ._setup_playwright_chrome ()
209- elif driver_name == 'firefox' :
210- browser = self ._setup_playwright_firefox ()
211- elif driver_name in ['safari' , 'webkit' ]:
212- browser = self ._setup_playwright_webkit ()
213- else :
214- raise Exception (f'Playwright does not support { driver_name } driver' )
215- return browser
216-
217- def _create_playwright_persistent_browser_context (self ):
218- """Create a browser in local machine using Playwright
219-
220- :returns: a new persistent browser context Playwright
221- """
222- driver_name = self .utils .get_driver_name ()
223- if driver_name in ('android' , 'ios' , 'iphone' ):
224- raise Exception ('Playwright does not support mobile devices' )
225- else :
226- if driver_name in ['chrome' , 'chromium' ]:
227- browser_context = self ._setup_playwright_persistent_chrome ()
228- elif driver_name == 'firefox' :
229- browser_context = self ._setup_playwright_persistent_firefox ()
230- elif driver_name in ['safari' , 'webkit' ]:
231- browser_context = self ._setup_playwright_persistent_webkit ()
232- else :
233- raise Exception (f'Playwright does not support { driver_name } driver' )
234- return browser_context
235-
236- def get_playwright_context_options (self ):
237- """Get Playwright context options from properties file
238-
239- :returns: Playwright context options
240- """
241- context_options = {}
242- try :
243- for key , value in dict (self .config .items ('PlaywrightContextOptions' )).items ():
244- self .logger .debug ("Added Playwright context option: %s = %s" , key , value )
245- context_options [key ] = self ._convert_property_type (value )
246- except NoSectionError :
247- pass
248- window_width = self .config .get_optional ('Driver' , 'window_width' )
249- window_height = self .config .get_optional ('Driver' , 'window_height' )
250- if window_width and window_height :
251- context_options ['viewport' ] = {'width' : int (window_width ), 'height' : int (window_height )}
252- return context_options
253-
254- def get_playwright_page_options (self ):
255- """Get Playwright page options from properties file
256-
257- :returns: Playwright page options
258- """
259- page_options = {}
260- try :
261- for key , value in dict (self .config .items ('PlaywrightPageOptions' )).items ():
262- self .logger .debug ("Added Playwright page option: %s = %s" , key , value )
263- page_options [key ] = self ._convert_property_type (value )
264- except NoSectionError :
265- pass
266- return page_options
267-
268167 def _get_capabilities_from_driver_type (self ):
269168 """Extract browserVersion and platformName from driver type and add them to capabilities
270169
@@ -396,69 +295,6 @@ def _add_firefox_extensions(self, driver):
396295 except NoSectionError :
397296 pass
398297
399- def _setup_playwright_firefox (self ):
400- """Setup Playwright Firefox browser
401-
402- :returns: a new Playwright Firefox browser
403- """
404- headless_mode = self .config .getboolean_optional ('Driver' , 'headless' )
405- arguments = []
406- preferences = {}
407- self ._add_playwright_firefox_arguments (arguments )
408- # Note: Playwright does not support Firefox extensions
409- self ._add_playwright_firefox_preferences (preferences )
410- browser_options = self ._get_playwright_browser_options ()
411- browser_options = self ._update_dict (browser_options , {'args' : arguments })
412- browser_options = self ._update_dict (browser_options , {'firefox_user_prefs' : preferences })
413- return self .playwright .firefox .launch (
414- headless = headless_mode ,
415- ** browser_options
416- )
417-
418- def _setup_playwright_persistent_firefox (self ):
419- """Setup Playwright Firefox persistent browser context
420-
421- :returns: a new Playwright Firefox persistent browser context
422- """
423- headless_mode = self .config .getboolean_optional ('Driver' , 'headless' )
424- arguments = []
425- preferences = {}
426- self ._add_playwright_firefox_arguments (arguments )
427- # Note: Playwright does not support Firefox extensions
428- self ._add_playwright_firefox_preferences (preferences )
429- context_options = self .get_playwright_context_options ()
430- context_options = self ._update_dict (context_options , {'args' : arguments })
431- context_options = self ._update_dict (context_options , {'firefox_user_prefs' : preferences })
432- return self .playwright .firefox .launch_persistent_context (
433- headless = headless_mode ,
434- ** context_options
435- )
436-
437- def _add_playwright_firefox_arguments (self , arguments ):
438- """Add Firefox arguments from properties file prepared for Playwright
439-
440- :param arguments: Firefox arguments object
441- """
442- try :
443- for pref , pref_value in dict (self .config .items ('FirefoxArguments' )).items ():
444- pref_value = '={}' .format (pref_value ) if pref_value else ''
445- self .logger .debug ("Added Firefox argument: %s%s" , pref , pref_value )
446- arguments .append ('--{}{}' .format (pref , self ._convert_property_type (pref_value )))
447- except NoSectionError :
448- pass
449-
450- def _add_playwright_firefox_preferences (self , preferences ):
451- """Add Firefox preferences from properties file prepared for Playwright
452-
453- :param preferences: Firefox preferences object
454- """
455- try :
456- for pref , pref_value in dict (self .config .items ('FirefoxPreferences' )).items ():
457- self .logger .debug ("Added Firefox preference: %s = %s" , pref , pref_value )
458- preferences [pref ] = self ._convert_property_type (pref_value )
459- except NoSectionError :
460- pass
461-
462298 @staticmethod
463299 def _convert_property_type (value ):
464300 """Converts the string value in a boolean, integer or string
@@ -526,80 +362,6 @@ def _get_chrome_options(self, capabilities={}):
526362
527363 return options
528364
529- def _get_playwright_browser_options (self ):
530- """
531- Get Playwright browser options from properties file
532-
533- :returns: Playwright browser options
534- """
535- browser_options = {}
536- try :
537- for key , value in dict (self .config .items ('PlaywrightBrowserOptions' )).items ():
538- self .logger .debug ("Added Playwright Browser option: %s = %s" , key , value )
539- browser_options [key ] = self ._convert_property_type (value )
540- except NoSectionError :
541- pass
542- return browser_options
543-
544- def _setup_playwright_chrome (self ):
545- """
546- Setup Playwright Chrome browser
547-
548- :returns: a new Playwright Chrome browser
549- """
550- headless_mode = self .config .getboolean_optional ('Driver' , 'headless' )
551- arguments = []
552- self ._add_playwright_chrome_arguments (arguments )
553- self ._add_playwright_chrome_extensions (arguments )
554- browser_options = self ._get_playwright_browser_options ()
555- browser_options = self ._update_dict (browser_options , {'args' : arguments })
556- return self .playwright .chromium .launch (
557- headless = headless_mode ,
558- ** browser_options
559- )
560-
561- def _setup_playwright_persistent_chrome (self ):
562- """
563- Setup Playwright Chrome persistent browser context
564-
565- :returns: a new Playwright Chrome persistent browser context
566- """
567- headless_mode = self .config .getboolean_optional ('Driver' , 'headless' )
568- arguments = []
569- self ._add_playwright_chrome_arguments (arguments )
570- self ._add_playwright_chrome_extensions (arguments )
571- context_options = self .get_playwright_context_options ()
572- context_options = self ._update_dict (context_options , {'args' : arguments })
573- return self .playwright .chromium .launch_persistent_context (
574- headless = headless_mode ,
575- ** context_options
576- )
577-
578- def _add_playwright_chrome_arguments (self , arguments ):
579- """Add Chrome arguments from properties file prepared for Playwright
580-
581- :param arguments: Chrome arguments object
582- """
583- try :
584- for pref , pref_value in dict (self .config .items ('ChromeArguments' )).items ():
585- pref_value = '={}' .format (pref_value ) if pref_value else ''
586- self .logger .debug ("Added Chrome argument: %s%s" , pref , pref_value )
587- arguments .append ('--{}{}' .format (pref , self ._convert_property_type (pref_value )))
588- except NoSectionError :
589- pass
590-
591- def _add_playwright_chrome_extensions (self , arguments ):
592- """Add Chrome extensions from properties file
593-
594- :param arguments: Chrome options object
595- """
596- try :
597- for pref , pref_value in dict (self .config .items ('ChromeExtensions' )).items ():
598- self .logger .debug ("Added Chrome extension: %s = %s" , pref , pref_value )
599- arguments .append ('--load-extension={}' .format (pref_value ))
600- except NoSectionError :
601- pass
602-
603365 def _add_chrome_options (self , options , option_name ):
604366 """Add Chrome options from properties file
605367
@@ -697,30 +459,6 @@ def _get_safari_options(self, capabilities={}):
697459 self ._update_dict (options .capabilities , capabilities )
698460 return options
699461
700- def _setup_playwright_webkit (self ):
701- """Setup Playwright Webkit browser
702-
703- :returns: a new Playwright Webkit browser
704- """
705- headless_mode = self .config .getboolean_optional ('Driver' , 'headless' )
706- browser_options = self ._get_playwright_browser_options ()
707- return self .playwright .webkit .launch (
708- headless = headless_mode ,
709- ** browser_options
710- )
711-
712- def _setup_playwright_persistent_webkit (self ):
713- """Setup Playwright Webkit persistent browser context
714-
715- :returns: a new Playwright Webkit persistent browser context
716- """
717- headless_mode = self .config .getboolean_optional ('Driver' , 'headless' )
718- context_options = self .get_playwright_context_options ()
719- return self .playwright .webkit .launch_persistent_context (
720- headless = headless_mode ,
721- ** context_options
722- )
723-
724462 def _setup_explorer (self ):
725463 """Setup Internet Explorer webdriver
726464
0 commit comments