فهرست منبع

update:更新webdriver配置

dongzhaorui 2 سال پیش
والد
کامیت
1467955d0a
1فایلهای تغییر یافته به همراه13 افزوده شده و 12 حذف شده
  1. 13 12
      FworkSpider/feapder/utils/webdriver.py

+ 13 - 12
FworkSpider/feapder/utils/webdriver.py

@@ -36,12 +36,12 @@ class WebDriver(RemoteWebDriver):
         proxy=None,
         proxy=None,
         driver_type=CHROME,
         driver_type=CHROME,
         timeout=10,
         timeout=10,
+        headless=False,
+        usages_local_driver=False,
         window_size=(1024, 800),
         window_size=(1024, 800),
         server_addr=None,
         server_addr=None,
-        custom_argument=None,
         version=None,
         version=None,
-        usages_local_driver=False,
-        headless=False,
+        custom_argument=None,
         executable_path=None,
         executable_path=None,
         service_log_path=None,
         service_log_path=None,
         **kwargs
         **kwargs
@@ -58,7 +58,7 @@ class WebDriver(RemoteWebDriver):
             window_size: # 窗口大小
             window_size: # 窗口大小
             executable_path: 浏览器路径,默认为默认路径
             executable_path: 浏览器路径,默认为默认路径
             server_addr: 远程服务地址
             server_addr: 远程服务地址
-            usages_local_driver: 使用本地驱动
+            usages_local_driver: 是否使用本地驱动
             service_log_path: selenium service 日志路径
             service_log_path: selenium service 日志路径
             version: 浏览器版本
             version: 浏览器版本
             **kwargs:
             **kwargs:
@@ -67,13 +67,13 @@ class WebDriver(RemoteWebDriver):
         self._user_agent = user_agent or DEFAULT_USERAGENT
         self._user_agent = user_agent or DEFAULT_USERAGENT
         self._proxy = proxy
         self._proxy = proxy
         self._headless = headless
         self._headless = headless
+        self._usages_local_driver = usages_local_driver
         self._timeout = timeout
         self._timeout = timeout
         self._window_size = window_size
         self._window_size = window_size
-        self._server_addr = server_addr or WEBDRIVER["server_addr"]
+        self._executable_path = executable_path
         self._custom_argument = custom_argument
         self._custom_argument = custom_argument
+        self._server_addr = server_addr or WEBDRIVER["server_addr"]
         self._version = version or WEBDRIVER["version"]
         self._version = version or WEBDRIVER["version"]
-        self._executable_path = executable_path
-        self._usages_local_driver = usages_local_driver
         self._service_log_path = service_log_path or WEBDRIVER["service_log_path"]
         self._service_log_path = service_log_path or WEBDRIVER["service_log_path"]
 
 
         if driver_type == WebDriver.CHROME:
         if driver_type == WebDriver.CHROME:
@@ -84,7 +84,7 @@ class WebDriver(RemoteWebDriver):
 
 
         else:
         else:
             raise TypeError(
             raise TypeError(
-                "dirver_type must be one of CHROME or PHANTOMJS or FIREFOX, but received {}".format(
+                "dirver_type must be one of CHROME or FIREFOX, but received {}".format(
                     type(driver_type)
                     type(driver_type)
                 )
                 )
             )
             )
@@ -223,8 +223,7 @@ class WebDriver(RemoteWebDriver):
         # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
         # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
         chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
         chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
         chrome_options.add_experimental_option("useAutomationExtension", False)
         chrome_options.add_experimental_option("useAutomationExtension", False)
-        chrome_options.add_argument("--disable-blink-features=AutomationControlled")
-
+        chrome_options.add_argument('--disable-blink-features=AutomationControlled')
         # docker 里运行需要
         # docker 里运行需要
         chrome_options.add_argument("--no-sandbox")
         chrome_options.add_argument("--no-sandbox")
         chrome_options.add_argument("--disable-gpu")
         chrome_options.add_argument("--disable-gpu")
@@ -278,7 +277,6 @@ class WebDriver(RemoteWebDriver):
                 'params': {'source': js}
                 'params': {'source': js}
             }
             }
             res = browser.execute("executeCdpCommand", params)['value']
             res = browser.execute("executeCdpCommand", params)['value']
-
         return browser
         return browser
 
 
     def local_chrome_driver(self):
     def local_chrome_driver(self):
@@ -286,7 +284,7 @@ class WebDriver(RemoteWebDriver):
         # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
         # 此步骤很重要,设置为开发者模式,防止被各大网站识别出来使用了Selenium
         chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
         chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
         chrome_options.add_experimental_option("useAutomationExtension", False)
         chrome_options.add_experimental_option("useAutomationExtension", False)
-        chrome_options.add_argument("--disable-blink-features=AutomationControlled")
+        chrome_options.add_argument('--disable-blink-features=AutomationControlled')
 
 
         # docker 里运行需要
         # docker 里运行需要
         chrome_options.add_argument("--no-sandbox")
         chrome_options.add_argument("--no-sandbox")
@@ -379,6 +377,9 @@ class WebDriver(RemoteWebDriver):
         else:
         else:
             raise AttributeError
             raise AttributeError
 
 
+    def quit(self):
+        self.get_driver().quit()
+
     # def __del__(self):
     # def __del__(self):
     #     if self.driver:
     #     if self.driver:
     #         self.driver.quit()
     #         self.driver.quit()