本库使用 ini 文件记录浏览器或`Session`对象的启动配置。便于配置复用,免于在代码中加入繁琐的配置信息。 默认情况下,页面对象启动时自动加载文件中的配置信息。 也可以在默认配置基础上用简单的方法再次修改,再保存到 ini 文件。 也可以保存多个 ini 文件,按不同项目须要调用。 !> **注意:**
ini 文件仅用于管理启动配置,浏览器或`Session`创建后再修改 ini 文件内容是没有效果的。
如果是接管已打开的浏览器,这些设置也没有用。
每次升级本库,ini 文件都会被重置,可另存到其它路径以免重置。 # ✔️ ini 文件内容 ini 文件默认拥有三部分配置:`paths`、`chrome_options`、`session_options`,初始内容如下。 ``` [paths] ; chromedriver.exe路径 chromedriver_path = ; 临时文件夹路径,暂时没有实际作用 tmp_path = [chrome_options] ; 浏览器默认地址和端口,程序会启动或接管这个端口的浏览器进程 debugger_address = 127.0.0.1:9222 ; 浏览器可执行文件路径 binary_location = chrome ; 配置信息 arguments = [ ; 屏蔽欢迎页面             '--no-first-run', ; 不使用沙盒 '--no-sandbox', ; 谷歌文档提到需要加上这个属性来规避bug '--disable-gpu', ; 忽略链接不安全页面提示 '--ignore-certificate-errors', ; 不显示信息栏 '--disable-infobars',             ; 允许弹窗             '--disable-popup-blocking' ] ; 插件 extensions = [] ; 实验性配置 experimental_options = { 'prefs': { ; 下载不弹出窗口 'profile.default_content_settings.popups': 0, ; 无弹窗 'profile.default_content_setting_values': {'notifications': 2}, ; 禁用PDF插件 'plugins.plugins_list': [{"enabled": False, "name": "Chrome PDF Viewer"}] }, ; 设置为开发者模式 'excludeSwitches': ["enable-automation"], 'useAutomationExtension': False } ; 超时设置 timeouts = {'implicit': 10.0, 'pageLoad': 30.0, 'script': 30.0} ; 页面加载策略 page_load_strategy = normal [session_options] headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.1.2 Safari/603.3.8", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Connection": "keep-alive", "Accept-Charset": "utf-8;q=0.7,*;q=0.7" } ``` # ✔️ 文件位置 默认配置文件存放在库文件夹下,文件名为 configs.ini。 用户可另存其它配置文件,或从另存的文件读取配置,但默认文件的位置和名称不会改变。 # ✔️ 使用默认配置文件启动 ## 📍 使用页面对象自动加载 这是默认启动方式。 ```python from DrissionPage import WebPage page = WebPage() ``` ## 📍 使用配置对象加载 这种方式一般用于加载配置后须要进一步修改。 ```python from DrissionPage import DriverOptions, SessionOptions, WebPage do = DriverOptions(ini_path='D:\\setting.ini') so = SessionOptions(ini_path='D:\\setting.ini') page = WebPage(driver_or_options=do, session_or_option=so) ``` ## 📍 使用 Drission 对象加载 这种方式一般用于加载非默认配置文件,或须在多个页面对象间传递`Drission`对象的情况。 这是`MixPage`独有的加载方式。 ```python from DrissionPage import MixPage, Drission ds = Drission(ini_path=r'D:\config1.ini') page = MixPage(drission=ds) ``` # ✔️ 保存/另存 ini 文件 ```python from DrissionPage import DriverOptions do = DriverOptions() # 设置不加载图片 do.set_no_imgs() # 保存到默认 ini 文件 do.save() # 保存到其它位置的配置文件 do.save(r'D:\config1.ini') ``` # ✔️ easy_set 方法 Chrome 浏览器的配置繁琐且难以记忆,本库提供一些常用功能的快速设置方法,调用即可修改 ini 文件中该部分内容。 !> **注意:**
easy_set 方法仅用于设置 ini 文件,浏览器或 Session 创建后再调用没有效果的。
如果是接管已打开的浏览器,这些设置也没有用。
这些方法只是便于修改 ini 文件,不要写在正式代码中。 ## 📍 简单示例 ```python # 导入 from DrissionPage.easy_set import set_headless # 设置无头模式 set_headless(True) ``` ## 📍 `show_settings()` 该方法用于打印 ini 文件内容。 **参数:** - `ini_path`:ini 文件路径,默认读取默认 ini 文件 **返回:**`None` ## 📍 `set_paths()` 该方法用于设置浏览器用到的几种路径信息,设置后可检查 driver 是否和浏览器匹配。 **参数:** - `driver_path`:chromedriver.exe 路径 - `chrome_path`:chrome.exe 路径 - `local_port`:本地端口号 - `debugger_address`:调试浏览器地址,会覆盖 local_port 设置,例:127.0.0.1:9222 - `download_path`:下载文件路径 - `tmp_path`:临时文件夹路径,暂时没有作用 - `user_data_path`:用户数据路径 - `cache_path`:缓存路径 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 - `check_version`:是否检查 chromedriver 和 Chrome 是否匹配 **返回:**`None` ## 📍 `set_headless()` 该方法用于设置是否已无头模式启动浏览器。 **参数:** - `on_off`:`bool`类型,表示开或关 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 **返回:**`None` ## 📍 `set_no_imgs()` 该方法用于设置是否禁止加载图片。 **参数:** - `on_off`:`bool`类型,表示开或关 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 **返回:**`None` ## 📍 `set_mute()` 该方法用于设置是否静音。 **参数:** - `on_off`:`bool`类型,表示开或关 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 **返回:**`None` ## 📍 `set_proxy()` 该方法用于设置代理。 **参数:** - `proxy`: 代理网址和端口,如 127.0.0.1:1080 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 **返回:**`None` ## 📍 `set_user_agent()` 该方法用于设置 user agent。 **参数:** - `user_agent`:user agent 文本 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 **返回:**`None` ## 📍 `set_argument()` 该方法用于设置浏览器配置 argument 属性。 **参数:** - `arg`:属性名 - `value`:属性值,有值的属性传入值。没有的传入`bool`表示开或关 - `ini_path`:要修改的 ini 文件路径,默认设置默认 ini 文件 **返回:**`None` ## 📍 `check_driver_version()` 该方法用于检查传入的 chrome 和 chromedriver 是否匹配。 **参数:** - `driver_path`:chromedriver.exe 路径 - `chrome_path`:chrome.exe 路径 **返回:**`bool`类型,表示是否匹配 ## 📍 `get_match_drive()` 该方法用于自动识别 chrome 版本并下载匹配的 driver。 **参数:** - `ini_path`:要读取和修改的 ini 文件路径 - `save_path`:chromedriver 保存路径 - `chrome_path`:指定 chrome.exe 位置,不指定会自动依次在 ini 文件、注册表、系统路径中查找 - `show_msg`:是否打印信息 - `check_version`:是否检查版本匹配 **返回:** 成功返回 driver 路径,失败返回`None`