CHROME类下 options函数根本没调用呀
来源:3-4 继承基类实现浏览器个性化

qq_Qian儭_03543846
2021-11-11
老师,实例中我看了下,CHROME类下 options函数根本没调用呀
encoding: utf-8
“”"
@author: xiesongsong
@file: demo01.py
@time: 2021/11/10 22:59
"""
from typing import Type, Union
from selenium.webdriver import *
class BrowserTypeError(Exception):
def init(self, _type):
self._type = _type
def __str__(self):
return f"unsupported type: {self._type}"
class BROWSER:
WINDOWS_SIZE = (1024, 768)
IMP_TIME = 30
PAGE_LOAD_TIME = 20
SCRIPT_TIME_OUT = 20
HEADLESS = True
CHROME_DRIVER_PATH = '../drivers/chrome_driver_v95.exe'
def __init__(self,
browser_type: Type[Union[Firefox, Chrome, Ie, Edge]] = Chrome,
option_type: Type[Union[FirefoxOptions, ChromeOptions, IeOptions]] = ChromeOptions,
driver_path: str = CHROME_DRIVER_PATH):
if not issubclass(browser_type, (Firefox, Chrome, Ie, Edge)):
raise BrowserTypeError(browser_type)
if not issubclass(option_type, (FirefoxOptions, ChromeOptions, IeOptions)):
raise BrowserTypeError(option_type)
if not isinstance(driver_path, str):
raise
self._path = driver_path
self._browser = browser_type
self._option = option_type
@property
def options(self):
"""
浏览器定制操作,在子类中实现
:return:
"""
return
@property
def browser(self):
"""
启动浏览器,返回浏览器实例
:return:
"""
return
class CHROME(BROWSER):
IMP_TIME = 30
PAGE_LOAD_TIME = 20
SCRIPT_TIME_OUT = 20
HEADLESS = False
WINDOWS_SIZE = (1920, 900)
START_MAX = '--start-maximized'
EXP = {
'excludeSwitches': ['enable-automation'],
'mobilEmulation': {'deviceName': 'iPhone 6'}
}
def options(self):
print("options.........")
chrome_option = self._option
chrome_option.add_argument(self.START_MAX)
for k, v in self.EXP.items():
chrome_option.add_experimental_option(k, v)
chrome_option.headless = self.HEADLESS
print(chrome_option)
return chrome_option
@property
def browser(self):
chrome = self._browser(self._path, options=self._option())
chrome.implicitly_wait(self.IMP_TIME)
chrome.set_script_timeout(self.SCRIPT_TIME_OUT)
chrome.set_page_load_timeout(self.PAGE_LOAD_TIME)
# chrome.set_window_size(*self.WINDOWS_SIZE)
return chrome
with CHROME().browser as _chrome:
_chrome.get(“http://www.baidu.com”)
from time import sleep
sleep(100)
1回答
-
托尼老师
2021-11-16
这一句有问题:
chrome = self._browser(self._path, options=self._option())
options参数的值传错了,应该传入CHROME类的属性方法self.options
00
相似问题