From 65923ce2af415bff684ee95222d9300924a89537 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 21 Feb 2023 23:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=99=A4selenium=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/__init__.py | 9 ++++++--- DrissionPage/chromium_page.py | 5 ++--- DrissionPage/common/cli.py | 6 +++--- DrissionPage/easy_set.py | 11 +++++++---- DrissionPage/web_page.py | 3 +-- requirements.txt | 4 ++-- setup.py | 1 - 7 files changed, 21 insertions(+), 18 deletions(-) diff --git a/DrissionPage/__init__.py b/DrissionPage/__init__.py index ec1a2e6..f002879 100644 --- a/DrissionPage/__init__.py +++ b/DrissionPage/__init__.py @@ -17,6 +17,9 @@ from .action_chains import ActionChains from .common.keys import Keys # 旧版页面类和启动配置类 -from .mixpage.mix_page import MixPage -from .mixpage.drission import Drission -from .configs.driver_options import DriverOptions +try: + from .mixpage.mix_page import MixPage + from .mixpage.drission import Drission + from .configs.driver_options import DriverOptions +except ModuleNotFoundError: + pass diff --git a/DrissionPage/chromium_page.py b/DrissionPage/chromium_page.py index 9d522e5..7c4e9c5 100644 --- a/DrissionPage/chromium_page.py +++ b/DrissionPage/chromium_page.py @@ -14,11 +14,10 @@ from requests import Session from .chromium_base import ChromiumBase, Timeout, ChromiumBaseSetter from .chromium_driver import ChromiumDriver from .chromium_tab import ChromiumTab -from .configs.chromium_options import ChromiumOptions -from .configs.driver_options import DriverOptions from .common.browser import connect_browser from .common.errors import CallMethodError from .common.web import set_session_cookies +from .configs.chromium_options import ChromiumOptions from .session_page import DownloadSetter @@ -41,7 +40,7 @@ class ChromiumPage(ChromiumBase): :param none: 用于后代继承 :return: None """ - if not addr_driver_opts or isinstance(addr_driver_opts, (ChromiumOptions, DriverOptions)): + if not addr_driver_opts or str(type(addr_driver_opts)).endswith(("ChromiumOptions'>", "DriverOptions'>")): self._driver_options = addr_driver_opts or ChromiumOptions(addr_driver_opts) # 接收浏览器地址和端口 diff --git a/DrissionPage/common/cli.py b/DrissionPage/common/cli.py index 43eadd7..33a827c 100644 --- a/DrissionPage/common/cli.py +++ b/DrissionPage/common/cli.py @@ -1,9 +1,9 @@ -import click +from click import command, option from DrissionPage.easy_set import set_paths -@click.command() -@click.option("-p", "--browser-path", help="Setting browser path.") +@command() +@option("-p", "--browser-path", help="Setting browser path.") def main(browser_path): """DrissionPage CLI.""" if browser_path: diff --git a/DrissionPage/easy_set.py b/DrissionPage/easy_set.py index a84ee1e..c860c2d 100644 --- a/DrissionPage/easy_set.py +++ b/DrissionPage/easy_set.py @@ -8,16 +8,19 @@ from pathlib import Path from re import search from typing import Union -from selenium import webdriver - -from DrissionPage.mixpage.drission import Drission from .common.constants import Settings from .common.tools import unzip from .configs.chromium_options import ChromiumOptions -from .configs.driver_options import DriverOptions from .configs.options_manage import OptionsManager from .session_page import SessionPage +try: + from selenium import webdriver + from DrissionPage.mixpage.drission import Drission + from .configs.driver_options import DriverOptions +except ModuleNotFoundError: + pass + def raise_when_ele_not_found(on_off=True): """设置全局变量,找不到元素时是否抛出异常 diff --git a/DrissionPage/web_page.py b/DrissionPage/web_page.py index 6ad966b..5ab9a1a 100644 --- a/DrissionPage/web_page.py +++ b/DrissionPage/web_page.py @@ -15,7 +15,6 @@ from .chromium_driver import ChromiumDriver from .chromium_page import ChromiumPage, ChromiumDownloadSetter, ChromiumPageSetter from .common.errors import CallMethodError from .configs.chromium_options import ChromiumOptions -from .configs.driver_options import DriverOptions from .configs.session_options import SessionOptions from .session_page import SessionPage, SessionPageSetter @@ -76,7 +75,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage): elif dr_opt is False: self._driver_options = ChromiumOptions(read_file=False) - elif isinstance(dr_opt, (ChromiumOptions, DriverOptions)): + elif str(type(dr_opt)).endswith(("ChromiumOptions'>", "DriverOptions'>")): self._driver_options = dr_opt else: diff --git a/requirements.txt b/requirements.txt index 801a504..bb59fbd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -selenium requests tldextract lxml cssselect DownloadKit>=0.5.0 FlowViewer>=0.2.1 -websocket-client \ No newline at end of file +websocket-client +click \ No newline at end of file diff --git a/setup.py b/setup.py index 626cae7..63b909a 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,6 @@ setup( packages=find_packages(), zip_safe=False, install_requires=[ - "selenium", "lxml", "tldextract", "requests",