def chrome(path='./chromedriver.exe', user_dir='', args: list = None) -> WebDriver: """ Chrome :param args: 浏览器参数 :param path: Chrome Driver路径 :param user_dir: Chrome用户文件路径,用于使用已有缓存及cookie :return: WebDriver """ # opt = options.Options() opt = webdriver.ChromeOptions() if user_dir: # opt = options.Options() # opt = webdriver.ChromeOptions() arg = '--user-data-dir=' + user_dir opt.add_argument(arg) # opt.add_argument('enable-automation') # opt.add_argument('disable-infobars') # 不显示受自动化控制的提示 opt.add_experimental_option('useAutomationExtension', False) opt.add_experimental_option('excludeSwitches', ['enable-automation']) if args: for arg in args: opt.add_argument(arg) dr = Chrome(executable_path=path, options=opt) dr.set_page_load_timeout(30) dr.implicitly_wait(10) dr.maximize_window() return dr
def web_chrome(self, params): try: # ip = self.var_map.get_var('ip') ip = self.var_map.get_var(params[0].strip()) host = 'http://' + ip + ':4444/wd/hub' driver = self.var_map.get_var('driver') if not driver: self.log.write( 'error', 'Undefined driver path: web_set_driver ${driver}') return False if host.find('127.0.0.1') != -1 or ip == '': self.dr = Chrome(executable_path=driver) else: dc = DesiredCapabilities.CHROME dc['webdriver.chrome.driver'] = driver self.dr = Remote(command_executor=host, desired_capabilities=dc) self.dr.maximize_window() self.dr.set_page_load_timeout(30) self.dr.implicitly_wait(10) self.log.write('info', 'Try to open chrome:|' + params[0] + '|---Success!') self.ele = WebEle(self.dr, self.log) return True except WebDriverException as e: self.log.write('error', 'Try to open chrome:|' + params[0] + '|---Fail!') self.log.write('error', e.__str__()) return False except Exception as e: self.log.write('error', 'Try to open chrome:|' + params[0] + '|---Fail!') self.log.write('error', e.__str__()) return False
def __init__(self, browser): if browser == 'Chrome': self.wd = Chrome( executable_path= r'C:\py\selen3\selen2\selen\drivers\win32\chromedriver.exe') self.session = SessionHelper(self) self.mail = MailHelper(self)
def chrome() -> WebDriver: from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.webdriver import WebDriver as Chrome options = Options() options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--window-size=1920x1080") return Chrome(options=options)
def get_configured_chrome(headless=False): chrome_options = Chrome() if headless: print('\nBrowser will start in headless mode!') chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--enable-automation') chrome_options.add_argument('--window-size=1920,1080') configured = webdriver.Chrome(options=chrome_options, executable_path=get_driver_path('chromedriver')) return configured
def get_configured_chrome(headless=HEADLESS_MODE): chrome_options = Chrome() if headless: print('\nBrowser will start in headless mode!') chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--disable-notifications') chrome_options.add_argument('--enable-automation') chrome_options.add_argument('--start-maximized') chrome_options.add_argument('--window-size=1920,1080') configured = webdriver.Chrome( options=chrome_options, executable_path=get_driver_path('chromedriver')) return configured
def setup_browser_driver(self, browser, path=''): """ Create instance of selenium webdriver base on driver type :browser: browser type: chrome | firefox | ie :path: the path of executable driver """ browser = browser.strip().lower() if browser == 'firefox': if path == '': path = self.get_project_path() + self.FIREFOX_DRIVER_PATH driver = Firefox(executable_path=self.format_executable_path(path)) else: if path == '': path = self.get_project_path() + self.CHROME_DRIVER_PATH driver = Chrome(self.format_executable_path(path)) driver.delete_all_cookies() return self.browser_management.ctx.register_driver(driver, None)
def setUpClass(cls): super().setUpClass() cls.selenium = Chrome() cls.selenium.implicitly_wait(5) cls.new_user = { 'email': '*****@*****.**', 'password': '******', 'username': '******', 'first_name': 'john', 'last_name': 'Doe', } cls.user_profile = { 'profile_phone_number': '+123456789', 'profile_street_address1': 'Street Address 1', 'profile_street_address2': 'Street Address 2', 'profile_postcode': 'P123', 'profile_town_or_city': 'Town or City', 'profile_country': 'Country', }
def get_driver(self): if self.get_type() == 'firefox': driver = Firefox(firefox_profile=None, firefox_binary=self.bin_path, timeout=30, capabilities=None, proxy=None, executable_path=self.get_driver_path(), options=self.get_options()) elif self.get_type() == 'ie': driver = Ie(executable_path=self.driver_path, options=self.get_options()) if self.get_window_size(): driver.set_window_size(self.get_window_size()) else: print(self.get_driver_path()) driver = Chrome(executable_path=self.get_driver_path(), options=self.get_options()) # This work-around to enable download mode in headless chrome # https://bugs.chromium.org/p/chromium/issues/detail?id=696481 # TODO: Check if the latest chromedriver update or not enable_download_in_headless_chrome(driver, get_download_path()) return driver
def setUpClass(cls): super().setUpClass() cls.selenium = Chrome() cls.selenium.implicitly_wait(5)
def setUpClass(cls): super().setUpClass() cls.selenium = Chrome()