Updated logic to launch browser based on CLI value
This commit is contained in:
parent
5a1c8bed44
commit
625ecc7b26
|
@ -1,45 +1,102 @@
|
||||||
|
|
||||||
from selenium import webdriver
|
from selenium import webdriver
|
||||||
from utilities.customlogger import custom_logger
|
from utilities.customlogger import custom_logger
|
||||||
import logging
|
import logging
|
||||||
from selenium.webdriver.chrome.options import Options
|
from selenium.webdriver.chrome.options import Options
|
||||||
|
from webdriver_manager.chrome import ChromeDriverManager
|
||||||
|
from datafiles.config_browserstack import *
|
||||||
|
from webdriver_manager.firefox import GeckoDriverManager
|
||||||
|
from webdriver_manager.microsoft import IEDriverManager
|
||||||
|
from webdriver_manager.microsoft import EdgeChromiumDriverManager
|
||||||
|
from selenium.webdriver.firefox.options import Options as FirefoxOptions
|
||||||
|
from msedge.selenium_tools import EdgeOptions
|
||||||
|
|
||||||
class WebDriverFactory():
|
import requests
|
||||||
|
|
||||||
|
class WebDriverFactory:
|
||||||
cl = custom_logger(logging.INFO)
|
cl = custom_logger(logging.INFO)
|
||||||
|
|
||||||
def __init__(self,browser):
|
def __init__(self, browser, headless):
|
||||||
self.browser = browser
|
self.browser = browser
|
||||||
|
self.headless = headless
|
||||||
|
|
||||||
|
|
||||||
def get_browser_instance(self):
|
def get_browser_instance(self):
|
||||||
if self.browser == "Firefox":
|
try:
|
||||||
driver = webdriver.Firefox(executable_path="drivers//geckodriver.exe")
|
if self.browser.lower() == "firefox":
|
||||||
|
options = FirefoxOptions()
|
||||||
|
if self.headless:
|
||||||
|
options.add_argument("--headless")
|
||||||
|
#options.add_argument("--disable-gpu")
|
||||||
|
profile = webdriver.FirefoxProfile()
|
||||||
|
#options.add_argument("--private")
|
||||||
|
# options.add_argument("-width=1920")
|
||||||
|
# options.add_argument("-height=1080")
|
||||||
|
profile.accept_untrusted_certs = True
|
||||||
|
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install(), firefox_profile=profile,
|
||||||
|
options=options)
|
||||||
|
|
||||||
elif self.browser == "Chrome":
|
elif self.browser.lower() == "chrome":
|
||||||
chrome_options = Options()
|
chrome_options = Options()
|
||||||
#download_dir = "C://Users//A610037//Downloads//download_chrome"
|
if self.headless:
|
||||||
chrome_options.add_argument('--start-maximized')
|
chrome_options.add_argument('headless')
|
||||||
chrome_options.add_experimental_option('prefs', {'geolocation': True})
|
#chrome_options.add_argument('window-size=1920x1080')
|
||||||
chrome_options.add_experimental_option('useAutomationExtension', False)
|
chrome_options.add_argument('ignore-certificate-errors')
|
||||||
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
|
chrome_options.add_argument('--incognito')
|
||||||
|
chrome_options.add_argument('--start-maximized')
|
||||||
|
# chrome_options.add_experimental_option('prefs', {'geolocation': True})
|
||||||
|
chrome_options.add_experimental_option('useAutomationExtension', False)
|
||||||
|
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
|
||||||
|
chrome_options.add_argument('--log-level=3')
|
||||||
|
# driver = webdriver.Chrome(options=chrome_options, executable_path='drivers//chromedriver.exe')
|
||||||
|
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
|
||||||
|
|
||||||
driver = webdriver.Chrome(options=chrome_options,executable_path='drivers//chromedriver.exe')
|
elif self.browser.lower() == "ie":
|
||||||
|
driver = webdriver.Ie(IEDriverManager().install())
|
||||||
|
|
||||||
elif self.browser == "Ie":
|
elif self.browser.lower() == "edge":
|
||||||
driver = webdriver.Ie(executable_path='drivers//IEDriverServer.exe')
|
options = EdgeOptions()
|
||||||
|
if self.headless:
|
||||||
else:
|
options.add_argument('headless')
|
||||||
driver = webdriver.Chrome(executable_path='drivers//chromedriver.exe')
|
options.use_chromium = True
|
||||||
|
#options.add_argument('window-size=1920x1080')
|
||||||
|
options.add_argument('ignore-certificate-errors')
|
||||||
baseUrl = "http://live.demoguru99.com/index.php/"
|
options.add_experimental_option('useAutomationExtension', False)
|
||||||
driver.delete_all_cookies()
|
options.add_argument('--inprivate')
|
||||||
driver.maximize_window()
|
options.add_argument('--log-level=3')
|
||||||
driver.implicitly_wait(15)
|
options.add_experimental_option("excludeSwitches", ["enable-automation"])
|
||||||
driver.get(baseUrl)
|
driver = webdriver.Chrome(EdgeChromiumDriverManager().install(), options=options)
|
||||||
self.cl.info('Launching the URL :: ' + str(baseUrl) + ' on browser :: ' + str(self.browser))
|
|
||||||
|
elif self.browser.lower() == 'browserstack':
|
||||||
return driver
|
# bs_local = Local()
|
||||||
|
# bs_local_args = {"key": key,"localIdentifier": localIdentifier}
|
||||||
|
# bs_local.start(**bs_local_args)
|
||||||
|
driver = webdriver.Remote(command_executor=bb_url, desired_capabilities=browser_config)
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
|
if self.headless:
|
||||||
|
self.cl.info("Starting " + str(self.browser).upper() + " browser in headless mode")
|
||||||
|
else:
|
||||||
|
self.cl.info("Starting " + str(self.browser).upper() + " browser ")
|
||||||
|
driver.maximize_window()
|
||||||
|
# if self.baseUrl:
|
||||||
|
# driver.get(self.baseUrl)
|
||||||
|
# self.cl.info("Opening the URL :: " + str(self.baseUrl))
|
||||||
|
|
||||||
|
driver.implicitly_wait(5)
|
||||||
|
driver.delete_all_cookies()
|
||||||
|
driver.set_page_load_timeout(20)
|
||||||
|
return driver
|
||||||
|
|
||||||
|
|
||||||
|
except ValueError as e:
|
||||||
|
self.cl.error("Browser not supported :: " + str(
|
||||||
|
self.browser) + ". Supported browser types are Chrome, Firefox, Edge. Exception occurred. :: " + str(
|
||||||
|
e.__class__.__name__) + ' ' + str(e))
|
||||||
|
raise e
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
self.cl.error("Exception occurred. :: " + str(
|
||||||
|
e.__class__.__name__) + ' ' + str(e))
|
||||||
|
raise e
|
||||||
|
|
Loading…
Reference in New Issue