# -*- coding:utf-8 -*- import configparser from selenium import webdriver from webdriver_manager.opera import OperaDriverManager from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.firefox import GeckoDriverManager from webdriver_manager.microsoft import IEDriverManager from webdriver_manager.microsoft import EdgeChromiumDriverManager from Common.LoggerBase import Logger from pathlib import Path import os # os.environ['WDM_LOG_LEVEL'] = '0' # #If you face error related to github credentials, you need to place github token: (*) os.system("export GH_TOKEN = 'asdasdasdasd'") Logger = Logger() class BrowserEngine(object): # chrome_driver_path = Path(Path.cwd()) / 'tools/chromedriver.exe' # ie_driver_path = Path.joinpath(Path.cwd(), 'tools/IEDriverServer.exe') # firefox_driver_path = Path(Path.cwd()) / 'tools/firefox.exe' def __init__(self, driver=None): self.driver = driver # read the browser type from config.ini file, return the driver # def open_browser(self, driver): # config = configparser.ConfigParser() # file_path = Path.joinpath(Path.cwd(), 'config/config.ini') # #config.read(file_path) # config.read(file_path, encoding='UTF-8') #如果代码有中文注释,用这个,不然报解码错误 # # browser = config.get("browserType", "browserName") # Logger.info("You had select %s browser." % browser) # url = config.get("testServer", "URL") # Logger.info("The test server url is: %s" % url) # # if browser == "Firefox": # driver = webdriver.Firefox(str(self.firefox_driver_path)) # Logger.info("Starting firefox browser.") # elif browser == "Chrome": # driver = webdriver.Chrome(str(self.chrome_driver_path)) # Logger.info("Starting Chrome browser.") # elif browser == "IE": # driver = webdriver.Ie(str(self.ie_driver_path)) # Logger.info("Starting IE browser.") # # driver.get(url) # Logger.info("Open url: %s" % url) # driver.maximize_window() # Logger.info("Maximize the current window.") # driver.implicitly_wait(10) # Logger.info("Set implicitly wait 10 seconds.") # return driver def open_browser(self, driver=None): config = configparser.ConfigParser() file_path = Path.joinpath(Path.cwd().parent, 'config/config.ini') # 如果代码有中文注释,用这个,不然报解码错误 encoding='UTF-8' config.read(file_path, encoding='UTF-8') browser = config.get("browserType", "browserName") Logger.info("You had select %s browser." % browser) url = config.get("testServer", "URL") Logger.info("The test server url is: %s" % url) if browser == "Firefox": #Driver cache by default is valid for 1 day. You are able to change this value using constructor parameter driver = webdriver.Firefox(executable_path=GeckoDriverManager(log_level=0).install()) Logger.info("Starting firefox browser.") elif browser == "Chrome": # driver = webdriver.Chrome(ChromeDriverManager(log_level=0).install()) driver = webdriver.Chrome(ChromeDriverManager(cache_valid_range=2, log_level=0).install()) Logger.info("Starting Chrome browser.") elif browser == "Ie": driver = webdriver.Ie(IEDriverManager(log_level=0).install()) Logger.info("Starting IE browser.") elif browser == "Edge": driver = webdriver.Edge(EdgeChromiumDriverManager(log_level=0).install()) Logger.info("Starting Edge browser.") elif browser == "Opera": driver = webdriver.Opera(executable_path=OperaDriverManager(log_level=0).install()) Logger.info('Starting Opera browser.') # elif browser == "Opera": # ''' # If the Opera browser is installed in a location other # than C:/Program Files or C:/Program Files (x86) on windows # and /usr/bin/opera for all unix variants and mac, then use the below code # ''' # options = webdriver.ChromeOptions() # options.add_argument('allow-elevated-browser') # options.binary_location = "C:\Users\USERNAME\FOLDERLOCATION\Opera\VERSION\opera.exe" # driver = webdriver.Opera(executable_path=OperaDriverManager(log_level=0).install(), options=options) driver.get(url) Logger.info("Open url: %s" % url) driver.maximize_window() Logger.info("Maximize the current window.") driver.implicitly_wait(10) Logger.info("Set implicitly wait 10 seconds.") return driver def quit_browser(self): Logger.info("Now, Close and quit the browser.") self.driver.quit()