68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
# pylint: disable=too-few-public-methods
 | 
						|
import os
 | 
						|
import platform
 | 
						|
 | 
						|
from selenium import webdriver
 | 
						|
from selenium.webdriver.chrome.options import Options as ChromeOptions
 | 
						|
from selenium.webdriver.edge.options import Options as EdgeOptions
 | 
						|
from selenium.webdriver.edge.service import Service as EdgeService
 | 
						|
from selenium.webdriver.firefox.options import Options as FirefoxOptions
 | 
						|
 | 
						|
from conftest import CWD
 | 
						|
 | 
						|
 | 
						|
class BrowserDriver:
 | 
						|
 | 
						|
    @staticmethod
 | 
						|
    def get(browser=None, headless=True):
 | 
						|
        valid_browsers = ['chrome', 'firefox', 'safari', 'edge']
 | 
						|
        if browser in valid_browsers:
 | 
						|
            browser_method = globals()[browser]
 | 
						|
            return browser_method(headless)
 | 
						|
 | 
						|
        raise ValueError(f"'{browser}' is not a supported browser")
 | 
						|
 | 
						|
 | 
						|
def chrome(headless=True):
 | 
						|
    options = ChromeOptions()
 | 
						|
    if headless:
 | 
						|
        options.add_argument("--headless")
 | 
						|
    options.add_argument('--ignore-certificate-errors')
 | 
						|
    return webdriver.Chrome(options=options)
 | 
						|
 | 
						|
 | 
						|
def firefox(headless=True):
 | 
						|
    options = FirefoxOptions()
 | 
						|
    if headless:
 | 
						|
        options.add_argument("--headless")
 | 
						|
    options.accept_insecure_certs = True
 | 
						|
    return webdriver.Firefox(options=options)
 | 
						|
 | 
						|
 | 
						|
def edge(headless=True):
 | 
						|
    options = EdgeOptions()
 | 
						|
    driver_name = "msedgedriver"
 | 
						|
    if platform.system() == 'Windows':
 | 
						|
        driver_name += ".exe"
 | 
						|
    edgedriver_loc = os.path.join(CWD, 'drivers', driver_name)
 | 
						|
 | 
						|
    print("***** DRIVER DEFINED LOCATION *****")
 | 
						|
    print(edgedriver_loc)
 | 
						|
    if os.path.isfile(edgedriver_loc):
 | 
						|
        print(f'\nThe file {edgedriver_loc} exists.\n')
 | 
						|
    else:
 | 
						|
        print(f'\nThe file {edgedriver_loc} does not exist!\n')
 | 
						|
 | 
						|
    options.use_chromium = True
 | 
						|
    options.add_argument('disable-gpu')
 | 
						|
    if headless:
 | 
						|
        options.add_argument('headless')
 | 
						|
    edge_service = EdgeService(executable_path=edgedriver_loc)
 | 
						|
    edge_driver = webdriver.Edge(service=edge_service, options=options)
 | 
						|
    return edge_driver
 | 
						|
 | 
						|
 | 
						|
def safari():
 | 
						|
    # Because safari driver is bundled with safari
 | 
						|
    return webdriver.Safari()
 |