DrissionPage/docs/启动配置/使用配置文件.md
2023-01-10 16:48:07 +08:00

271 lines
7.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

本库使用 ini 文件记录浏览器或`Session`对象的启动配置。便于配置复用,免于在代码中加入繁琐的配置信息。
默认情况下,页面对象启动时自动加载文件中的配置信息。
也可以在默认配置基础上用简单的方法再次修改,再保存到 ini 文件。
也可以保存多个 ini 文件,按不同项目须要调用。
!> **注意:** <br>ini 文件仅用于管理启动配置,浏览器或`Session`创建后再修改 ini 文件内容是没有效果的。 <br>如果是接管已打开的浏览器,这些设置也没有用。 <br>每次升级本库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 文件中该部分内容。
!> **注意:** <br>easy_set 方法仅用于设置 ini 文件,浏览器或 Session 创建后再调用没有效果的。 <br>如果是接管已打开的浏览器,这些设置也没有用。<br>这些方法只是便于修改 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`