From be9fe5ab7962ac70dabe35570aa5ac9d56eb156d Mon Sep 17 00:00:00 2001 From: g1879 Date: Wed, 4 Jan 2023 16:45:13 +0800 Subject: [PATCH] =?UTF-8?q?3.0.28=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/MixPage使用方法/Drission对象.md | 96 ++--- .../DriverPage和SessionPage.md | 5 +- docs/MixPage使用方法/cookies的使用.md | 5 +- docs/MixPage使用方法/元素操作.md | 234 ++++++------ docs/MixPage使用方法/创建页面对象.md | 68 ++-- .../启动配置/Chrome启动配置.md | 185 --------- docs/MixPage使用方法/启动配置/使用配置文件.md | 265 ------------- .../对接selenium及requests代码.md | 10 +- docs/MixPage使用方法/打包程序.md | 54 --- docs/MixPage使用方法/查找页面元素.md | 297 ++++++++------- docs/MixPage使用方法/获取元素信息.md | 116 +++--- docs/MixPage使用方法/获取网页信息.md | 66 ++-- docs/MixPage使用方法/访问网页.md | 38 +- docs/MixPage使用方法/页面操作.md | 351 +++++++++--------- docs/README.md | 2 +- docs/Tips大集合.md | 26 -- docs/WebPage使用方法/3.10动作链.md | 90 ++++- docs/WebPage使用方法/3.3查找元素.md | 168 ++++----- docs/_navbar.md | 3 - docs/_sidebar.md | 47 ++- docs/imgs/code.jpg | Bin 0 -> 180441 bytes docs/imgs/mixpage.jpg | Bin 0 -> 82056 bytes docs/imgs/webpage.jpg | Bin 0 -> 63909 bytes docs/入门指南/基本概念.md | 8 +- docs/入门指南/贴心设计.md | 99 +++++ .../启动配置/Session启动配置.md | 95 +++-- docs/启动配置/使用配置文件.md | 270 ++++++++++++++ docs/{MixPage使用方法 => }/启动配置/概述.md | 4 +- docs/启动配置/浏览器启动配置.md | 179 +++++++++ docs/版本历史.md | 2 +- .../{MixPage使用方法 => 进阶使用}/下载文件.md | 102 ++--- docs/进阶使用/打包程序.md | 87 +++++ .../监听浏览器网络.md} | 10 +- setup.py | 2 +- 34 files changed, 1583 insertions(+), 1401 deletions(-) delete mode 100644 docs/MixPage使用方法/启动配置/Chrome启动配置.md delete mode 100644 docs/MixPage使用方法/启动配置/使用配置文件.md delete mode 100644 docs/MixPage使用方法/打包程序.md delete mode 100644 docs/Tips大集合.md create mode 100644 docs/imgs/code.jpg create mode 100644 docs/imgs/mixpage.jpg create mode 100644 docs/imgs/webpage.jpg create mode 100644 docs/入门指南/贴心设计.md rename docs/{MixPage使用方法 => }/启动配置/Session启动配置.md (62%) create mode 100644 docs/启动配置/使用配置文件.md rename docs/{MixPage使用方法 => }/启动配置/概述.md (65%) create mode 100644 docs/启动配置/浏览器启动配置.md rename docs/{MixPage使用方法 => 进阶使用}/下载文件.md (59%) create mode 100644 docs/进阶使用/打包程序.md rename docs/{MixPage使用方法/监听浏览器网络数据.md => 进阶使用/监听浏览器网络.md} (90%) diff --git a/docs/MixPage使用方法/Drission对象.md b/docs/MixPage使用方法/Drission对象.md index ff31f33..0674004 100644 --- a/docs/MixPage使用方法/Drission对象.md +++ b/docs/MixPage使用方法/Drission对象.md @@ -2,14 +2,14 @@ 可直接读取 ini 文件配置信息创建,也可以在初始化时传入配置信息。 在“[使用方法->创建页面对象](创建页面对象.md)”章节已经涉及过`Drission`的用法,这里介绍属性和方法。 -# `Drission`类 +# ✔️ `Drission`类 -初始化参数: +**初始化参数:** -- driver_or_options:`WebDriver`对象或`DriverOptions`、`Options`类,传入`False`则创建空配置对象 -- session_or_options:`Session`对象或设置字典,传入`False`则创建空配置对象 -- ini_path:ini 文件路径 -- proxy:代理设置,`dict`类型。格式:{'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'} +- `driver_or_options`:`WebDriver`对象或`DriverOptions`、`Options`类,传入`False`则创建空配置对象 +- `session_or_options`:`Session`对象或设置字典,传入`False`则创建空配置对象 +- `ini_path`:ini 文件路径 +- `proxy`:代理设置,`dict`类型。格式:{'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'} 前两个参数可直接接收`WebDriver`和`Session`对象,这时后面两个参数无效。 若接收配置对象,则按照配置创建`WebDriver`和`Session`对象。 @@ -35,117 +35,117 @@ do = DriverOptions() drission = Drission(driver_options=do) ``` -## session +## 📍 `session` 此属性返回该对象管理的`Session`对象。 -## driver +## 📍 `driver` 此属性返回该对象管理的`WebDriver`对象。 -## driver_options +## 📍 `driver_options` 此属性返回用于创建`WebDriver`对象的`DriverOptions`对象。 -## session_options +## 📍 `session_options` 此属性以`dict`形式返回用于创建 Session 对象的配置参数。可传入`dict`或`SessionOptions`赋值。 -## proxy +## 📍 `proxy` 此属性返回代理信息,`dict`形式。可传入`dict`赋值。格式:{'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'} -## debugger_progress +## 📍 `debugger_progress` 此属性返回浏览器进程(如有)。 -## kill_browser() +## 📍 `kill_browser()` 此方法用于关闭浏览器进程。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## get_browser_progress_id() +## 📍 `get_browser_progress_id()` 此方法用于获取浏览器进程 id。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## hide_browser() +## 📍 `hide_browser()` 此方法用于隐藏浏览器进程窗口。 -参数:无 +**参数:** 无 -返回: `None` +**返回:**`None` -## show_browser() +## 📍 `show_browser()` 此方法用于显示浏览器进程窗口。 -参数:无 +**参数:** 无 -返回: `None` +**返回:**`None` -## set_cookies() +## 📍 `set_cookies()` 此方法用于设置`cookies`。可选择对某个对象设置。 -参数: +**参数:** -- cookies:`cookies`信息,可为`CookieJar`,`list`,`tuple`,`str`,`dict` -- set_session:是否设置`Session`对象的`cookies` -- set_driver:是否设置浏览器的`cookies` +- `cookies`:`cookies`信息,可为`CookieJar`,`list`,`tuple`,`str`,`dict` +- `set_session`:是否设置`Session`对象的`cookies` +- `set_driver`:是否设置浏览器的`cookies` -返回:None +**返回:**`None` -## cookies_to_session() +## 📍 `cookies_to_session()` 此方法用于把`WebDriver`对象的`cookies`复制到`Session`对象。 -参数: +**参数:** -- copy_user_agent:是否复制 user agent 信息 +- `copy_user_agent`:是否复制 user agent 信息 -返回:None +**返回:**`None` -## cookies_to_driver() +## 📍 `cookies_to_driver()` 此方法用于把`Session`对象的`cookies`复制到`WebDriver`对象。 复制`cookies`到浏览器必须指定域名。 -参数: +**参数:** -- url:作用域 +- `url`:作用域 -返回:`None` +**返回:**`None` -## close_driver() +## 📍 `close_driver()` 此方法用于关闭`WebDriver`对象,可选择是否关闭浏览器进程。 -参数: +**参数:** -- kill:是否关闭浏览器进程 +- `kill`:是否关闭浏览器进程 -返回:None +**返回:**`None` -## close_session() +## 📍 `close_session()` 此方法用于关闭`Session`对象。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## close() +## 📍 `close()` 此方法用于关闭`Session`和`WebDriver`对象。 -参数:无 +**参数:** 无 -返回:`None` \ No newline at end of file +**返回:**`None` \ No newline at end of file diff --git a/docs/MixPage使用方法/DriverPage和SessionPage.md b/docs/MixPage使用方法/DriverPage和SessionPage.md index 9221712..c581a7f 100644 --- a/docs/MixPage使用方法/DriverPage和SessionPage.md +++ b/docs/MixPage使用方法/DriverPage和SessionPage.md @@ -1,7 +1,7 @@ 如果无须切换模式,可根据需要只使用 DriverPage 或 SessionPage。 分别对应 d 和 s 模式,用法和 MixPage 相似。 -# SessionPage +# ✔️ SessionPage ```python from DrissionPage.session_page import SessionPage @@ -18,7 +18,7 @@ page.get('http://www.baidu.com') print(page.ele('#su').text) ``` -# DriverPage +# ✔️ DriverPage ```python from DrissionPage.driver_page import DriverPage @@ -34,4 +34,3 @@ page.get('http://www.baidu.com') # 输出:百度一下 print(page.ele('#su').text) ``` - diff --git a/docs/MixPage使用方法/cookies的使用.md b/docs/MixPage使用方法/cookies的使用.md index 64d14d0..54ea8a9 100644 --- a/docs/MixPage使用方法/cookies的使用.md +++ b/docs/MixPage使用方法/cookies的使用.md @@ -14,7 +14,4 @@ page.get_cookies(all_domains=True) page.set_cookies(cookies) ``` -?> **Tips:**
-d 模式设置`cookies`后要刷新页面才能看到效果。
-s 模式可在 ini 文件、`SessionOptions`、配置字典中设置`cookies`,在`MixPage`初始化时即可传入,d 模式只能用`set_cookies()`函数设置。 - +?> **Tips:**
d 模式设置`cookies`后要刷新页面才能看到效果。
s 模式可在 ini 文件、`SessionOptions`、配置字典中设置`cookies`,在`MixPage`初始化时即可传入,d 模式只能用`set_cookies()`函数设置。 diff --git a/docs/MixPage使用方法/元素操作.md b/docs/MixPage使用方法/元素操作.md index a270dc2..ffdb328 100644 --- a/docs/MixPage使用方法/元素操作.md +++ b/docs/MixPage使用方法/元素操作.md @@ -1,8 +1,8 @@ d 模式下的`DriverElement`对象可以对浏览器相应元素进行控制。 -# 元素操作方法 +# ✔️ 元素操作方法 -## click() +## 📍 `click()` 此方法用于点击元素。可以选择是否用 js 方式点击,可以在点击失败时自动重试。默认情况下,使用 selenium 原生的点击方法,如果重试超过限定时间,自动改用 js 方式点击。可通过`by_js`参数设置点击方式。 此设计除了可保证点击成功,还可以用于检测页面上的遮罩层是否消失。遮罩层经常出现在 js 方式翻页的时候,它出现的时候会阻碍 selenium @@ -11,12 +11,12 @@ d 模式下的`DriverElement`对象可以对浏览器相应元素进行控制。 !> 注意:
使用 js 方式点击时,是不会进行重试的。 -参数: +**参数:** -- by_js:是否用 js 方式点击,为`None`时先用 selenium 原生方法点击,重试失败超时后改为用 js 点击;为`True`时直接用 js 点击;为`False`时即使重试超时也不会改用 js。 -- timeout:点击失败重试超时时间,为`None`时使用父页面`timeout`设置。 +- `by_js`:是否用 js 方式点击,为`None`时先用 selenium 原生方法点击,重试失败超时后改为用 js 点击;为`True`时直接用 js 点击;为`False`时即使重试超时也不会改用 js。 +- `timeout`:点击失败重试超时时间,为`None`时使用父页面`timeout`设置。 -返回:`bool`,表示是否点击成功。 +**返回:**`bool`,表示是否点击成功。 ```python # 点击一个元素,重试超时根据所在页面元素而定,都失败就改用 js 点击 @@ -30,19 +30,19 @@ ele.click(timeout = 10) # 不断重试点击,直到遮罩层消失,或到 ele.click(by_js=True) # 无视遮罩层,直接用 js 点击下方元素 ``` -## click_at() +## 📍 `click_at()` 此方法用于带偏移量点击元素,偏移量相对于元素左上角坐标。不传入`x`或`y`值时点击元素中点。可选择是否用 js 方式点击,但不会进行重试。 可用于点击一些奇怪的东西,比如用伪元素表示的控件。 点击的目标不一定在元素上,可以传入负值,或大于元素大小的值,点击元素附近的区域。向右和向下为正值,向左和向上为负值。 -参数: +**参数:** -- x:相对元素左上角坐标的 x 轴偏移量 -- y:相对元素左上角坐标的 y 轴偏移量 -- by_js:是否用 js 点击 +- `x`:相对元素左上角坐标的 x 轴偏移量 +- `y`:相对元素左上角坐标的 y 轴偏移量 +- `by_js`:是否用 js 点击 -返回:`None` +**返回:**`None` ```python # 点击元素右上方 50*50 的位置 @@ -55,35 +55,35 @@ ele.click_at(x=50) ele.click_at() ``` -## r_click() +## 📍 `r_click()` 此方法实现右键单击元素。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` ```python ele.r_click() ``` -## r_click_at() +## 📍 `r_click_at()` 此方法用于带偏移量右键点击元素,用法和`click_at()`相似,但没有`by_js`参数。 -参数: +**参数:** -- x:相对元素左上角坐标的x轴偏移量 -- y:相对元素左上角坐标的y轴偏移量 +- `x`:相对元素左上角坐标的x轴偏移量 +- `y`:相对元素左上角坐标的y轴偏移量 -返回:`None` +**返回:** `None` ```python # 点击距离元素左上角 50*50 的位置(位于元素内部) ele.r_click_at(50, 50) ``` -## input() +## 📍 `input()` 此方法用于向元素输入文本或组合键,也可用于输入文件路径到`input`元素(文件间用`\n`间隔)。可选择输入前是否清空元素。 insure 参数为 `True` 时可自动确保输入正确。该功能是为了应对 selenium 原生输入在某些i情况下会失效的问题。但只能用于 input 元素且 `type` 为 `text` 的情况。 接收组合键的时候可接收 @@ -91,14 +91,14 @@ selenium 的 `Keys` 对象的值。组合键要放在一个 `tuple` 中传入。 !> **注意:**
`insure` 为 `True` 时不能用于接收组合键。 ?> **Tips:**
- 有些文本框可以接收回车代替点击按钮,可以直接在文本末尾加上`'\n'`。
- 非传入`tuple`时,会自动把非`str`转换为`str`。 -参数: +**参数:** -- vals:文本值或按键组合 -- clear:输入前是否清空文本框 -- insure:是否确保输入正确,不能用于输入组合键 -- timeout:尝试输入的超时时间,不指定则使用父页面的超时时间,只在 `insure_input` 参数为 `True` 时生效 +- `vals`:文本值或按键组合 +- `clear`:输入前是否清空文本框 +- `insure`:是否确保输入正确,不能用于输入组合键 +- `timeout`:尝试输入的超时时间,不指定则使用父页面的超时时间,只在 `insure_input` 参数为 `True` 时生效 -返回:`bool`类型,表示是否成功输入。`insure` 为 `False` 时始终返回 `True`。 +**返回:**`bool`类型,表示是否成功输入。`insure` 为 `False` 时始终返回 `True`。 ```python # 输入文本 @@ -116,47 +116,47 @@ ele.input((Keys.CONTROL, 'a'), insure=False) ele.input('D:\\test1.txt\nD:\\test2.txt') ``` -## clear() +## 📍 `clear()` 此方法用于清空元素文本,可使用确保清空的方式,若元素是不可编辑的,返回`None`。 -参数: +**参数:** -- insure:是否确保清空。为`True`则用`input()`确保值变成`''`,为`False`则用 selenium 元素`clear()`方法 +- `insure`:是否确保清空。为`True`则用`input()`确保值变成`''`,为`False`则用 selenium 元素`clear()`方法 -返回:`bool`,是否清空成功,不能清空的元素返回`None` +**返回:**`bool`,是否清空成功,不能清空的元素返回`None` ```python ele.clear() ``` -## run_script() +## 📍 `run_script()` 此方法用于对元素执行 js 代码,代码中用`arguments[0]`表示自己。 -参数: +**参数:** -- script:js 文本 -- *args:传入 js 的参数 +- `script`:js 文本 +- `*args`:传入 js 的参数 -返回:js 执行的结果 +**返回:** js 执行的结果 ```python # 用执行 js 的方式点击元素 ele.run_script('arguments[0].click()') ``` -## wait_ele() +## 📍 `wait_ele()` 此方法用于等待当前元素的某个下级元素到达某种状态。 调用此方法返回一个`ElementWaiter`对象,调用该对象方法实现各种方式的等待。 -参数: +**参数:** -- loc_or_ele:要等待的元素,可以是元素或定位符 -- timeout:等待超时时间,默认使用页面超时时间 +- `loc_or_ele`:要等待的元素,可以是元素或定位符 +- `timeout`:等待超时时间,默认使用页面超时时间 -方法: +**方法:** | 方法 | 参数说明 | 功能 | |:---------:|:----:|:------------:| @@ -178,111 +178,111 @@ ele2 = ele1.ele('#div1') ele1.wait_ele(ele2).hidden() ``` -## screenshot() +## 📍 `screenshot()` 此方法用于对元素进行截图。 如果是图片元素,会自动等待加载结束才截图。 此方法能自动获取能够使用的文件名,避免重名覆盖原有文件。并返回保存路径。 保存格式为 png,也可以返回图片的二进制文本。 -参数: +**参数:** -- path:图片保持路径 -- filename:图片文件名,不传入时以元素`tag`标签命名 -- as_bytes:是否已字节形式返回图片,为True时上面两个参数失效 +- `path`:图片保持路径 +- `filename`:图片文件名,不传入时以元素`tag`标签命名 +- `as_bytes`:是否已字节形式返回图片,为True时上面两个参数失效 -返回:图片完整路径或字节文本 +**返回:** 图片完整路径或字节文本 ```python path = ele.screenshot(r'D:\tmp', 'img1') # 保存到路径,文件名为img1.png bytes = ele.screenshot(as_bytes=True) # 返回截图二进制文本 ``` -## set_prop() +## 📍 `set_prop()` 此方法用于设置元素`property`属性。 -参数: +**参数:** -- prop: 属性名 -- value: 属性值 +- `prop`: 属性名 +- `value`: 属性值 -返回:`bool`,是否设置成功 +**返回:**`bool`,是否设置成功 ```python ele.set_prop('value', 'Hello world!') ``` -## set_attr() +## 📍 `set_attr()` 此方法用于设置元素`attribute`属性。 -参数: +**参数:** -- attr:属性名 -- value:属性值 +- `attr`:属性名 +- `value`:属性值 -返回:`bool`,是否设置成功 +**返回:**`bool`,是否设置成功 ```python ele.set_attr('href', 'http://www.gitee.com') ``` -## remove_attr() +## 📍 `remove_attr()` 此方法用于删除元素`attribute`属性。 -参数: +**参数:** -- attr:属性名 +- `attr`:属性名 -返回:`bool`,是否删除成功 +**返回:**`bool`,是否删除成功 ```python ele.remove_attr('href') ``` -## submit() +## 📍 `submit()` 此方法用于提交表单,若元素不在表单内,返回`None`,否则返回`True`。 -参数:无 +**参数:** 无 -返回:`True`或`None` +**返回:**`True`或`None` ```python ele.submit() ``` -## drag() +## 📍 `drag()` 此方法用于拖拽元素到相对于当前的一个新位置,可以设置速度,可以选择是否随机抖动。 -参数: +**参数:** -- x:x 变化值 -- y:y 变化值 -- speed:拖动的速度,传入 0 即瞬间到达 -- shake:是否随机抖动 +- `x`:x 变化值 +- `y`:y 变化值 +- `speed`:拖动的速度,传入 0 即瞬间到达 +- `shake`:是否随机抖动 -返回:None +**返回:**`None` ```python # 拖动当前元素到距离 50*50 的位置,速度为 100,不随机抖动 ele.drag(50, 50, 100, False) ``` -## drag_to() +## 📍 `drag_to()` 此方法用于拖拽元素到另一个元素上或一个坐标上。 -参数: +**参数:** -- ele_or_loc: 另一个元素或坐标元组,接收元素时坐标是元素中点的坐标。可接收 selenium 的`WebElement`或本库的`DriverElement` -- speed: 拖动的速度,传入 0 即瞬间到达 -- shake: 是否随机抖动 +- `ele_or_loc`: 另一个元素或坐标元组,接收元素时坐标是元素中点的坐标。可接收 selenium 的`WebElement`或本库的`DriverElement` +- `speed`: 拖动的速度,传入 0 即瞬间到达 +- `shake`: 是否随机抖动 -返回:None +**返回:**`None` ```python # 把 ele1 拖拽到 ele2 上 @@ -294,7 +294,7 @@ ele1.drag_to(ele2) ele1.drag_to((50, 50)) ``` -## scroll +## 📍 `scroll` 此属性用于以某种方式滚动元素中的滚动条。 调用此属性返回一个`Scroll`对象,调用该对象方法实现各种方式的滚动。 @@ -326,16 +326,16 @@ ele.scroll.down(200) ele.scroll.to_location(100, 300) ``` -## hover() +## 📍 `hover()` 此方法用于模拟鼠标悬停在元素上,可接受偏移量,偏移量相对于元素左上角坐标。不传入`x`或`y`值时悬停在元素中点。`x`和`y`值可接受负值。 -参数: +**参数:** -- x:相对元素左上角坐标的 x 轴偏移量 -- y:相对元素左上角坐标的 y 轴偏移量 +- `x`:相对元素左上角坐标的 x 轴偏移量 +- `y`:相对元素左上角坐标的 y 轴偏移量 -返回:`None` +**返回:**`None` ```python # 悬停在元素右上方 50*50 的位置 @@ -348,7 +348,7 @@ ele.hover(x=50) ele.hover() ``` -# `Select`类 +# ✔️ `Select`类 `select`元素的操作较为复杂,因此专门做了一个类用于处理它。每个`DriverElement`都有`select`属性,如果是`select`元素,该属性是一个`Select`类,否则该属性为`False`。 `select`元素要操作列表时,实际上是对这个`Select`对象进行操作。 @@ -359,9 +359,9 @@ ele.select ?> **Tips:**
网页操作中经常遇到动态变化的表单,这时需要等待列表项加载。`Select`类内置等待功能,默认为页面等待时间。 -## 属性 +## 📍 属性 -### is_multi +### 📎 `is_multi` 该属性表示当前`select`元素是否多选列表。 @@ -369,7 +369,7 @@ ele.select ele.select.is_multi ``` -### options +### 📎 `options` 该属性以列表形式返回当前`select`元素下所有列表项元素对象,这些对象是`DriverElement`。 @@ -377,7 +377,7 @@ ele.select.is_multi options = ele.select.options ``` -### selected_option +### 📎 `selected_option` 该属性返回第一个被选中的元素对象。 @@ -385,7 +385,7 @@ options = ele.select.options option_ele = ele.select.selected_option ``` -### selected_options +### 📎 `selected_options` 该属性以列表形式返回第所有被选中的元素对象。如果是单选列表,返回一个列表 @@ -393,21 +393,21 @@ option_ele = ele.select.selected_option options = ele.select.select.selected_options ``` -## 方法 +## 📍 方法 -### select() +### 📎 `select()` 该方法用于选定下拉列表中子元素。 接收`int`类型时根据序号选择,接收`str`类型时根据文本选择。 接收`list`或`tuple`时同时选择多个项,多项可序号和文本混排。只能在多选列表使用。 Select 类的`__call__()`方法直接调用这个方法,因此可以直接`ele.select()`来替代这个方法。写法更直观。 -参数: +**参数:** -- text_or_index:根据文本或序号择选项,若允许多选,传入`list`或`tuple`可多选 -- timeout:等待列表项出现的时间 +- `text_or_index`:根据文本或序号择选项,若允许多选,传入`list`或`tuple`可多选 +- `timeout`:等待列表项出现的时间 -返回:是否选择成功 +**返回:** 是否选择成功 ```python # 根据文本选择下拉列表项,等待1秒 @@ -426,14 +426,14 @@ ele.select((0, 2)) ele.select(('text1', 2)) ``` -### select_by_value() +### 📎 `select_by_value()` -参数: +**参数:** -- value:`value`属性值,若允许多选,传入`list`或`tuple`可多选 -- timeout:等待列表项出现的时间 +- `value`:`value`属性值,若允许多选,传入`list`或`tuple`可多选 +- `timeout`:等待列表项出现的时间 -返回:是否选择成功 +**返回:** 是否选择成功 此方法用于根据`value`值选择项。当元素是多选列表时,可以接受`list`或`tuple`,同时选择多个项,可和序号混排。 @@ -445,16 +445,16 @@ ele.select.select_by_value('value1') ele.select.select_by_value(('value1', 2)) ``` -### deselect() +### 📎 `deselect()` 此方法用于取消选定下拉列表中子元素。当元素是多选列表时,可以接受`list`或`tuple`,同时取消选择多个项。 -参数: +**参数:** -- text_or_index:根据文本、值选或序号择选项,若允许多选,传入`list`或`tuple`可多选 -- timeout:等待列表项出现的时间 +- `text_or_index`:根据文本、值选或序号择选项,若允许多选,传入`list`或`tuple`可多选 +- `timeout`:等待列表项出现的时间 -返回:是否取消选择成功 +**返回:** 是否取消选择成功 ```python # 根据文本取消选择下拉列表项 @@ -473,16 +473,16 @@ ele.select.deselect((0, 1)) ele.select.deselect(('text1', 2)) ``` -### deselect_by_value() +### 📎 `deselect_by_value()` 此方法用于根据`value`值取消选择项。当元素是多选列表时,可以接受`list`或`tuple`,同时取消选择多个项,可和序号混排。 -参数: +**参数:** -- value:`value`属性值,若允许多选,传入`list`或`tuple`可取消多项 -- timeout:等待列表项出现的时间 +- `value`:`value`属性值,若允许多选,传入`list`或`tuple`可取消多项 +- `timeout`:等待列表项出现的时间 -返回:是否取消选择成功 +**返回:** 是否取消选择成功 ```python # 根据 value 值取消选择列表项 @@ -492,27 +492,27 @@ ele.select.deselect_by_value('value1') ele.select.deselect_by_value(('value1', 2)) ``` -## 多项列表独有功能 +## 📍 多项列表独有功能 -### clear() +### 📎 `clear()` 此方法用于清空多选列表选项。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` ```python ele.select.clear() ``` -### invert() +### 📎 `invert()` 此方法用于反选多选列表选项。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` ```python ele.select.invert() diff --git a/docs/MixPage使用方法/创建页面对象.md b/docs/MixPage使用方法/创建页面对象.md index 3be9ea3..2eedbce 100644 --- a/docs/MixPage使用方法/创建页面对象.md +++ b/docs/MixPage使用方法/创建页面对象.md @@ -3,22 +3,22 @@ 可以通过指定配置信息创建须要的页面对象,如无界面的浏览器、是否加载插件、是否接管已打开的浏览器、设置`headers`、设置代理等等。 这些配置信息,可以通过几种方式设置。配置的详细用法后文再讲。本节先了解创建页面对象的几种方式。 -# `MixPage`类 +# ✔️ `MixPage`类 `MixPage`页面对象封装了常用的网页操作,并实现在两种模式之间的切换。 `MixPage`须控制一个`Drission`对象并使用其中的`WebDriver`或`Session`对象来实现。对浏览器或网络连接的操作。如没有传入,`MixPage`会自己创建一个(使用传入的配置信息或从默认 ini 文件读取)。 -初始化参数: +**初始化参数:** -- mode:初始化时模式,`'d'`或`'s'`,默认为`'d'` -- drission:Drission 对象,不传入时会自动创建 -- timeout:超时时间,s 模式时为连接时间,d 模式时为查找元素、处理弹出框、输入文本等超时时间 -- driver_options:浏览器设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`WebDriver`对象,传入`False`则不创建 -- session_options:requests 设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`Session`对象,传入`False`则不创建 +- `mode`:初始化时模式,`'d'`或`'s'`,默认为`'d'` +- `drission`:Drission 对象,不传入时会自动创建 +- `timeout`:超时时间,s 模式时为连接时间,d 模式时为查找元素、处理弹出框、输入文本等超时时间 +- `driver_options`:浏览器设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`WebDriver`对象,传入`False`则不创建 +- `session_options`:requests 设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`Session`对象,传入`False`则不创建 !> **注意:**
有传入`drission`参数时,`driver_options`和`session_options`参数无效 -# 直接创建 +# ✔️ 直接创建 这种方式代码最简洁,程序会从配置文件中读取配置,自动生成页面对象。可以保持代码简洁。 在基本概念一节我们提到过,本库使用配置文件记录常用配置信息,也可以直接把配置写在代码里。 @@ -31,20 +31,20 @@ page = MixPage('d') page = MixPage('s') ``` -# 通过配置信息创建 +# ✔️ 通过配置信息创建 本库有两种管理配置信息的对象,分别是`DriverOptions`和`SessionOptions`,对应 d 模式和 s 模式的配置。 须要时,可以创建相应的配置对象进行设置。 -## `DriverOptions`类 +## 📍 `DriverOptions`类 `DriverOptions`用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。 `DriverOptions`对象能实现链式操作。 -初始化参数: +**初始化参数:** -- read_file:是否从 ini 文件中读取配置信息 -- ini_path:ini 文件路径,为`None`则读取默认 ini 文件 +- `read_file`:是否从 ini 文件中读取配置信息 +- `ini_path`:ini 文件路径,为`None`则读取默认 ini 文件 ```python # 导入 DriverOptions @@ -56,14 +56,14 @@ do = DriverOptions().set_mute().set_no_imgs() page = MixPage(driver_options=do) ``` -## `SessionOptions`类 +## 📍 `SessionOptions`类 `SessionOptions`用于管理创建`Session`对象时的配置,内置了常用的配置,并能实现链式操作。详细使用方法见“启动配置”一节。 -初始化参数: +**初始化参数:** -- read_file:是否从 ini 文件中读取配置信息 -- ini_path:ini 文件路径,为`None`则读取默认 ini 文件 +- `read_file`:是否从 ini 文件中读取配置信息 +- `ini_path`:ini 文件路径,为`None`则读取默认 ini 文件 !>**注意:**
`Session`对象创建后再修改这个配置是没有效果的。 @@ -86,7 +86,7 @@ d 模式的配置和 s 模式的配置是可以同时使用的,不会互相影 page = MixPage(mode='s', session_options=so, driver_options=do) ``` -# 传入`Drission`对象创建 +# ✔️ 传入`Drission`对象创建 在入门指南的基本概念一节里,我们讲过`Drission`对象相当于驱动器的角色。事实上,上述两种方式,`MixPage`都会自动创建一个`Drission`对象用于管理与网站或浏览器的连接,我们当然也可以手动创建并传入`MixPage`。 `Drission`一般是不用手动创建的,要手动创建的时候,一般是用于i以下几种情况: @@ -95,16 +95,16 @@ page = MixPage(mode='s', session_options=so, driver_options=do) - 在不同`MixPage`间传递驱动器 - 与 selenium 或 requests 原生代码拼接,用于兼容这两者的代码 -## `Drission`类 +## 📍 `Drission`类 -初始化参数: +**初始化参数:** -- driver_or_options:`WebDriver`对象、`DriverOptions`对象或`Options`对象。传入`False`时自动创建一个空配置对象。 -- session_or_options:`Session`对象、`SessionOptions`对象、`Options`对象或设置字典。传入`False`时自动创建一个空配置对象。 -- ini_path:要使用的 ini 文件的路径 -- proxy:初始化时设置代理 +- `driver_or_options`:`WebDriver`对象、`DriverOptions`对象或`Options`对象。传入`False`时自动创建一个空配置对象。 +- `session_or_options`:`Session`对象、`SessionOptions`对象、`Options`对象或设置字典。传入`False`时自动创建一个空配置对象。 +- `ini_path`:要使用的 ini 文件的路径 +- `proxy`:初始化时设置代理 -## 使用其它 ini 文件创建 +## 📍 使用其它 ini 文件创建 ```python from DrissionPage import MixPage, Drission @@ -113,7 +113,7 @@ d = Drission(ini_path=r'./config1.ini') page = MixPage(drission=d) ``` -## 传递驱动器 +## 📍 传递驱动器 多页面对象间共用驱动器,如多个`MixPage`控制一个浏览器: @@ -125,7 +125,7 @@ d = page1.drission page2 = MixPage(drission=d) ``` -## 从 selenium 和 requests 代码传入 +## 📍 从 selenium 和 requests 代码传入 DrissionPage 的代码能和 selenium 及 requests 代码兼容,便于不同程序间的对接。 只需把`WebDriver`对象或`Session`传入`Drission`对象即可。 @@ -143,7 +143,7 @@ page = MixPage(drission=d) page.get('https://www.baidu.com') ``` -## 用配置信息创建 +## 📍 用配置信息创建 因为`MixPage`创建时能直接接收配置信息,所以这个方法基本不需要用到,写出来只是表示有这个功能。 @@ -157,7 +157,7 @@ d = Drission(driver_or_options=do, session_or_options=so) page = MixPage(drission=d) ``` -# 接管手动打开的浏览器 +# ✔️ 接管手动打开的浏览器 如果须要手动打开浏览器,手动操作后再接管,可以这样做: @@ -184,7 +184,7 @@ page = MixPage(driver_options=do) ?>**Tips:**
接管使用 bat 文件打开的浏览器也是一样做法做法。
接管浏览器时只有`local_port`、`debugger_address`、`driver_path`参数是有效的。 -# 多 Chrome 浏览器共存 +# ✔️ 多 Chrome 浏览器共存 如果想要同时操作多个 Chrome 浏览器,或者自己在使用 Chrome 上网,同时控制另外几个跑自动化,就须要给这些被程序控制的浏览器设置单独的端口和用户文件夹,否则会造成冲突。具体用`DriverOptions`对象进行设置,示例如下: @@ -223,19 +223,19 @@ page2 = MixPage(driver_options=do2) ?> **Tips:**
使用 bat 文件打开浏览器再接管操作是一样的。 -# 一些技巧 +# ✔️ 一些技巧 事实上,本库默认启动浏览器的方式是先通过程序在 9222(或用户指定的)端口运行一个浏览器进程,然后通过程序接管。这种做法有很多好处: -## 可重复使用的浏览器对象 +## 📍 可重复使用的浏览器对象 当程序运行完毕,浏览器不会主动关闭,下次再运行的时候可以直接在当前状态下继续运行。于是无须每次打开新的浏览器对象,无须从最开始步骤重新运行整个程序,一些前置条件(如登录)也无须每次运行,大大提高开发效率。 -## 简便的调试方式 +## 📍 简便的调试方式 通过重复使用浏览器对象,用户可以把浏览器页面调整到某个状态再用程序接管,对调试某个特定问题效率极高。比如有些通过很多步骤才能到达的页面,如果每次重新运行会花费大量时间,而将页面固定再由程序接管,测试各种细节非常方便快捷。 -## 一行代码传递登录状态到 requests +## 📍 一行代码传递登录状态到 requests 本库的一个特点是打通了浏览器和`requests`之间的登录状态,我们可以手动登录浏览器,再用程序接管,然后切换到 s 模式,这时 s 模式的`Session`对象即已活动浏览器的登录信息,无须用`requests` 处理登录过程,极大地简化了开发复杂程度。示例: diff --git a/docs/MixPage使用方法/启动配置/Chrome启动配置.md b/docs/MixPage使用方法/启动配置/Chrome启动配置.md deleted file mode 100644 index 1310406..0000000 --- a/docs/MixPage使用方法/启动配置/Chrome启动配置.md +++ /dev/null @@ -1,185 +0,0 @@ -为使浏览器设置更便利,本库扩展了`selenium.webdriver.chrome.options`的`Options`对象功能,创建了`DriverOptions`类,专门用于管理浏览器的启动配置。 - -!> **注意:**
-1、`DriverOptions`仅用于管理启动配置,浏览器启动后再修改无效。
-2、若设置了`local_port`或`debugger_address`且浏览器未启动,则只有`arguments`、`driver_path`、`chrome_path`参数生效。
-3、若设置了`local_port`或`debugger_address`且接管已有浏览器,只有`driver_path`参数生效。 - -# DriverOptions 类 - -`DriverOptions`类继承自`Options 类`,保留了原来所有功能,原生功能不在这里叙述,只介绍增加的功能。 -对象创建时,可从配置文件中读取配置来进行初始化,不从文件读取则创建一个空配置对象。 -该类绝大部分方法都支持链式操作。 - -初始化参数: - -- read_file:是否从默认 ini 文件中读取配置信息 -- ini_path:ini 文件路径,为`None`则读取默认 ini 文件 - -## driver_path - -此属性返回 chromedriver 文件路径。 - -## chrome_path - -此属性返回 Chrome 浏览器启动文件路径,即`binary_location`。 -为空时程序会根据注册表或系统路径查找。 - -## set_paths() - -该方法用于设置浏览器用到的几种路径信息。 - -参数: - -- driver_path:chromedriver.exe 路径 -- chrome_path:chrome.exe 路径 -- local_port:本地端口号 -- debugger_address:调试浏览器地址,会覆盖`local_port`设置,例:127.0.0.1:9222 -- download_path:下载文件路径 -- user_data_path:用户数据路径 -- cache_path:缓存路径 - -返回:`None` - -## save() - -此方法用于保存当前配置对象的信息到配置文件。 - -参数: - -- path:配置文件的路径,默认保存到当前读取的配置文件,传入`'default'`保存到默认 ini 文件 - -返回:配置文件绝对路径 - -## save_to_default() - -此方法用于保存当前配置对象的信息到默认 ini 文件。 - -参数:无 - -返回:配置文件绝对路径 - -## remove_argument() - -此方法用于移除一个`argument`项。 - -参数: - -- value:设置项名称,带有值的设置项传入设置名称即可 - -返回:当前对象 - -## remove_experimental_option() - -此方法用于移除一个实验设置,传入key值删除。 - -参数: - -- key:实验设置的名称 - -返回:当前对象 - -## remove_all_extensions() - -此方法用于移除所有插件。 - -参数:无 - -返回:当前对象 - -## set_argument() - -此方法用于设置浏览器配置的`argument`属性。 - -参数: - -- arg:属性名 -- value:属性值,有值的属性传入值,没有的传入`bool`类型表示开关 - -返回:当前对象 - -## set_timeouts() - -此方法用于设置三种超时时间,selenium 4 以上版本有效。 - -参数: - -- implicit:查找元素超时时间 -- pageLoad:页面加载超时时间 -- script:脚本运行超时时间 - -返回:当前对象 - -## set_headless() - -该方法用于设置是否已无头模式启动浏览器。 - -参数: - -- on_off:`bool`类型,表示开或关 - -返回:None - -## set_no_imgs() - -该方法用于设置是否禁止加载图片。 - -参数: - -- on_off:`bool`类型,表示开或关 - -返回:`None` - -## set_mute() - -该方法用于设置是否静音。 - -参数: - -- on_off:`bool`类型,表示开或关 - -返回:None - -## set_proxy() - -该方法用于设置代理。 - -参数: - -- proxy: 代理网址和端口,如 127.0.0.1:1080 - -返回:`None` - -## set_user_agent() - -该方法用于设置 user agent。 - -参数: - -- user_agent:user agent文本 - -返回:`None` - -## as_dict() - -该方法以`dict`方式返回所有配置信息。 - -参数:无 - -返回:配置信息 - -# 简单示例 - -```python -from DrissionPage import MixPage -from DrissionPage.config import DriverOptions - -# 创建配置对象(默认从 ini 文件中读取配置) -do = DriverOptions() -# 设置不加载图片、静音 -do.set_no_imgs(True).set_mute(True) - -# 以该配置创建页面对象 -page = MixPage(driver_options=do) -``` - diff --git a/docs/MixPage使用方法/启动配置/使用配置文件.md b/docs/MixPage使用方法/启动配置/使用配置文件.md deleted file mode 100644 index d11271a..0000000 --- a/docs/MixPage使用方法/启动配置/使用配置文件.md +++ /dev/null @@ -1,265 +0,0 @@ -本库使用 ini 文件记录浏览器或`Session`对象的启动配置。便于配置复用,免于在代码中加入繁琐的配置信息。 -默认情况下,`MixPage`对象启动时自动加载文件中的配置信息。 -也可以在默认配置基础上用简单的方法再次修改,再保存到 ini 文件。 -也可以保存多个 ini 文件,按不同项目须要调用。 - -!> **注意:**
-ini 文件仅用于管理启动配置,浏览器或`Session`创建后再修改 ini 文件内容是没有效果的。
-如果是接管已打开的浏览器,这些设置也没有用。
-每次升级本库,ini 文件都会被重置,可另存到其它路径以免重置。 - -# ini 文件内容 - -ini 文件默认拥有三部分配置:`paths`、`chrome_options`、`session_options`,初始内容如下。 - -``` -[paths] -; chromedriver.exe路径 -chromedriver_path = - -; 临时文件夹路径,暂时没有实际作用 -tmp_path = - -[chrome_options] -; 浏览器默认地址和端口,程序会启动或接管这个端口的浏览器进程,设为 '' 则用 selenium 普通方式启动浏览器 -debugger_address = 127.0.0.1:9222 - -; chrome.exe路径 -binary_location = - -; 配置信息 -arguments = [ - ; 静音 - '--mute-audio', - ; 不使用沙盒 - '--no-sandbox', - ; 谷歌文档提到需要加上这个属性来规避bug - '--disable-gpu', - ; 忽略警告 - 'ignore-certificate-errors', - ; 不显示信息栏 - '--disable-infobars' - ] - -; 插件 -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 - } - -[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。 -用户可另存其它配置文件,或从另存的文件读取配置,但默认文件的位置和名称不会改变。 - -# 使用默认配置文件启动 - -## 使用`MixPage`对象自动加载 - -这是默认启动方式。 - -```python -from DrissionPage import MixPage - -page = MixPage() -``` - -## 使用配置对象加载 - -这种方式一般用于加载配置后须要进一步修改。 - -```python -from Drission.config import DriverOptions, SessionOptions - -do = DriverOptions() -so = SessionOptions() - -page = MixPaage(driver_options=do, session_option=so) -``` - -## 使用 Drission 对象加载 - -这种方式一般用于加载非默认配置文件,或须在多个页面对象间传递`Drission`对象的情况。 - -```python -from DrissionPage import MixPage, Drission - -ds = Drission(ini_path=r'D:\config1.ini') -page = MixPage(drission=ds) -``` - -# 保存/另存 ini 文件 - -```python -from DrissionPage.config 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 创建后再调用没有效果的。
-如果是接管已打开的浏览器,这些设置也没有用。 - -## 简单示例 - -```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` diff --git a/docs/MixPage使用方法/对接selenium及requests代码.md b/docs/MixPage使用方法/对接selenium及requests代码.md index 0150f76..c87607c 100644 --- a/docs/MixPage使用方法/对接selenium及requests代码.md +++ b/docs/MixPage使用方法/对接selenium及requests代码.md @@ -1,7 +1,7 @@ DrissionPage 代码可无缝拼接 selenium 及 requests 代码。既可直接使用 selenium 的`WebDriver`对象,也可导出自身的`WebDriver`给 selenium 代码使用。requests 的 `Session`对象也可直接传递。便于已有项目的迁移。 -# selenium 转 DrissionPage +# ✔️ selenium 转 DrissionPage ```python from selenium import webdriver @@ -17,7 +17,7 @@ page = MixPage(drission=drission) print(page.title) ``` -# DrissionPage 转 selenium +# ✔️ DrissionPage 转 selenium ```python page = MixPage() @@ -31,9 +31,9 @@ print(driver.title) element = driver.find_element(By.XPATH, '//div') ``` -# requests 转 DrissionPage +# ✔️ requests 转 DrissionPage -``` python +```python from requests import Session session = requets.Session() @@ -45,7 +45,7 @@ page = MixPage('s', drission=drission) page.get('https://www.baidu.com') ``` -# DrissionPage 转 requests +# ✔️ DrissionPage 转 requests ```python from DrissionPage import MixPage diff --git a/docs/MixPage使用方法/打包程序.md b/docs/MixPage使用方法/打包程序.md deleted file mode 100644 index da248a6..0000000 --- a/docs/MixPage使用方法/打包程序.md +++ /dev/null @@ -1,54 +0,0 @@ -# 注意事项 - -程序如直接打包为 exe 文件,运行会遇到报错。这是可能因为程序在默认路径找不到 ini 文件引起的。解决的方法有两种: - -1. **把 ini 文件放到打包的程序文件夹** - 这样程序运行时会根据相对路径查找 ini 文件,避免找不到默认文件的问题 - -```python -from DrissionPage import Drission, MixPage - -drission = Drission(ini_path=r'.\configs.ini') # ini文件放在程序相同路径下 -page = MixPage(drission=drission) -``` - -2. **把配置写到程序中,不使用 ini 文件** - -```python -from DrissionPage.config import DriverOptions, SessionOptions -from DrissionPage import MixPage - -do = DriverOptions(read_file=False) -so = SessionOptions(read_file=False) -page = MixPage(driver_options=do, session_options=so) -``` - -!> **注意**
这个时候`Drission`的两个参数都要输入内容,如果其中一个不需要设置可以输入`False`. - -如: - -```python -drission = Drission(driver_or_options=do, session_or_options=False) -``` - -# 实用示例 - -通常,我会把一个绿色浏览器和打包后的 exe 文件放在一起,程序中用相对路径指向该浏览器,这样拿到别的电脑也可以正常实用。 - -```python -from DrissionPage import MixPage -from DrissionPage.config import DriverOptions - -do = DriverOptions(read_file=False).set_paths(local_port='9888', - chrome_path=r'.\Chrome\chrome.exe', - driver_path=r'.\Chrome\chromedriver.exe', - user_data_path=r'.\Chrome\userData') -page = MixPage(driver_options=do, session_options=False) - -page.get('https://www.baidu.com') -``` - -注意以下两点,程序就会跳过读取 ini 文件: - -- `DriverOptions()`里要设置`read_file=False` -- 如果不传入某个模式的配置(示例中为 s 模式),要在`MixPage()`初始化是设置对应参数为`False` diff --git a/docs/MixPage使用方法/查找页面元素.md b/docs/MixPage使用方法/查找页面元素.md index c08ec9a..614382b 100644 --- a/docs/MixPage使用方法/查找页面元素.md +++ b/docs/MixPage使用方法/查找页面元素.md @@ -11,9 +11,9 @@ d 模式的元素还有专门用于处理 shadow dom 的`shadow_root`属性。获取到的元素可继续用这些方法获取后代元素,使用方法和普通元素一致。 -# 示例 +# ✔️ 示例 -## 简单示例 +## 📍 简单示例 ```html @@ -61,7 +61,7 @@ parent = p1.parent() div2 = p1.after(1, 'tag:div') ``` -## 实际示例 +## 📍 实际示例 复制此代码可直接运行查看结果。 @@ -93,17 +93,17 @@ IOT/物联网/边缘计算 # 查找元素方法 -## ele() +## 📍 `ele()` 此方法用于查找并返回第一个匹配的元素,d 模式下返回`DriverElement`,s 模式下返回`SessionElement`,用 xpath 获取元素属性时,直接返回属性文本。查找不到结果则返回`None`。 -参数: +**参数:** -- loc_or_str(元素对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串 -- loc_or_ele(页面对象拥有):元素的定位信息,可以是元素对象,loc 元组,或查询字符串 -- timeout:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 +- `loc_or_str`(元素对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串 +- `loc_or_ele`(页面对象拥有):元素的定位信息,可以是元素对象,loc 元组,或查询字符串 +- `timeout`:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 -返回:s 模式下返回`SessionElement`,d 模式下返回`DriverElement`,或用 xpath 获取到的属性值 +**返回:** s 模式下返回`SessionElement`,d 模式下返回`DriverElement`,或用 xpath 获取到的属性值 ```python # 在页面内查找元素 @@ -117,16 +117,16 @@ ele2 = ele1.ele('search text') class = ele1.ele('xpath://div/@class') ``` -## eles() +## 📍 `eles()` 此方法与`ele()`相似,但返回的是匹配到的所有元素组成的列表,用 xpath 获取元素属性时,返回属性文本组成的列表。 -参数: +**参数:** -- loc_or_str:元素的定位信息,可以是 loc 元组,或查询字符串 -- timeout:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 +- `loc_or_str`:元素的定位信息,可以是 loc 元组,或查询字符串 +- `timeout`:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 -返回:s 模式下返回`SessionElement`组成的列表,d 模式下返回`DriverElement`组成的列表,或用 xpath 获取到的属性值组成的列表 +**返回:** s 模式下返回`SessionElement`组成的列表,d 模式下返回`DriverElement`组成的列表,或用 xpath 获取到的属性值组成的列表 ```python # 获取 ele 元素内的所有 p 元素 @@ -135,7 +135,7 @@ p_eles = ele.eles('tag:p') print(p_eles[0]) ``` -## s_ele() +## 📍 `s_ele()` 此方法用于在一个元素下查找后代元素,以`SessionElement`形式返回结果(xpath 获取属性值时依然是返回`str`),也可以直接将一个元素或页面转换为`SessionElement`版本。 @@ -143,12 +143,12 @@ print(p_eles[0]) s 模式下这个方法和`ele()`是一样的。 -参数: +**参数:** -- loc_or_str(元素对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前元素的`SessionElemnet`版本 -- loc_or_ele(页面对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前页面的 `SessionElemnet`版本 +- `loc_or_str`(元素对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前元素的`SessionElemnet`版本 +- `loc_or_ele`(页面对象拥有):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前页面的 `SessionElemnet`版本 -返回:`SessionElement`,或用 xpath 获取到的属性值 +**返回:**`SessionElement`,或用 xpath 获取到的属性值 ```python # 获取元素或页面的的 SessionElement 版本 @@ -162,17 +162,17 @@ ele2 = ele1.s_ele('search text') ele = page.s_ele('search text') ``` -## s_eles() +## 📍 `s_eles()` 此方法与`s_ele()`相似,但返回的是匹配到的所有元素组成的列表,或属性值组成的列表。 -参数: +**参数:** -- loc_or_str:元素的定位信息,可以是 loc 元组,或查询字符串(必填) +- `loc_or_str`:元素的定位信息,可以是 loc 元组,或查询字符串(必填) -返回:`SessionElement`组成的列表,或用 xpath 获取到的属性值组成的列表 +**返回:**`SessionElement`组成的列表,或用 xpath 获取到的属性值组成的列表 -## active_ele +## 📍 `active_ele` 该属性返回当前页面焦点所在元素。d 模式独有。 @@ -180,7 +180,7 @@ ele = page.s_ele('search text') ele = page.active_ele ``` -## shadow_root +## 📍 `shadow_root` `DriverElement`元素除了以上方法和属性外,还有`shadow_root`属性,用于获取其内部的 shadow_root 元素。 该属性返回的是一个`ShadowRootElement`,类似于`DriverElement`,功能比`DriverElement`少。但也有`ele()`和`eles()`方法,可直接搜索其下的元素,返回 `DriverElement` @@ -202,17 +202,17 @@ ele1.click() **匹配模式** 指字符串是否完全匹配,有以下两种: -## `=` +## 📍 `=` 表示精确匹配,匹配完全符合的文本或属性。 -## `:` +## 📍 `:` 表示模糊匹配,匹配含有某个字符串的文本或属性。 **关键字** 是出现在定位语句最左边,用于指明该语句以哪种方式去查找元素,有以下这些: -## `#` +## 📍 `#` 表示`id`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。 @@ -224,7 +224,7 @@ ele1 = page.ele('#ele_id') ele2 = ele1.ele('#:ele_id') ``` -## `.` +## 📍 `.` 表示`class`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。 @@ -236,7 +236,7 @@ ele2 = ele1.ele('.ele_class') ele2 = ele1.ele('.:ele_class') ``` -## `@` +## 📍 `@` 表示某个属性,只匹配一个属性。 `@`关键字只有一个简单功能,就是匹配`@`后面的内容,不再对后面的字符串进行解析。因此即使后面的字符串也存在`@`或`@@`,也作为要匹配的内容对待。 @@ -264,7 +264,7 @@ ele2 = ele1.ele('@email=abc@def.com') ele2 = ele1.ele('css:div[abc\@def="v"]') ``` -## `@@` +## 📍 `@@` 表示某个属性,多属性匹配时使用,个数不限。还能匹配要忽略的元素,匹配文本时也和`@`不一样。 `@@`后跟 - 时,表示 not。如: @@ -293,7 +293,7 @@ ele2 = ele1.ele('@@-class') ele2 = ele1.ele('@@-name:ele_name') ``` -## `text` +## 📍 `text` 要匹配的文本,查询字符串如开头没有任何关键字,也表示根据传入的文本作模糊查找。 如果元素内有多个直接的文本节点,精确查找时可匹配所有文本节点拼成的字符串,模糊查找时可匹配每个文本节点。 @@ -315,7 +315,7 @@ ele2 = ele1.ele('some text') ele2 = page.ele('text:text:') ``` -## `text()` +## 📍 `text()` 作为查找属性时使用的文本关键字,必须与`@`或`@@`配合使用。 与`@`配合和与`@@`配合使用时,`text()`的意义是有差别的。 @@ -343,7 +343,7 @@ ele = page.ele('text:some text') ele = page.ele('@@text():some text') ``` -## `tag` +## 📍 `tag` 表示元素的标签,只在语句最前面且单独使用时生效,可与`@`或`@@`配合使用。`tag:`与`tag=`效果一致。 @@ -367,10 +367,9 @@ ele2 = ele1.ele('tag:div@text():text') ele2 = ele1.ele('tag:div@@text():text') ``` -?> **Tips:**
-注意, `tag:div@text():text` 和 `tag:div@@text():text` 是有区别的,前者只在`div`的直接文本节点搜索,后者搜索`div`的整个内部。 +?> **Tips:**
注意, `tag:div@text():text` 和 `tag:div@@text():text` 是有区别的,前者只在`div`的直接文本节点搜索,后者搜索`div`的整个内部。 -## `css` +## 📍 `css` 表示用 css selector 方式查找元素。`css:`与`css=`效果一致。 @@ -382,7 +381,7 @@ ele2 = ele1.ele('css:.div') ele2 = ele1.ele('css:>div') ``` -## `xpath` +## 📍 `xpath` 表示用 xpath 方式查找元素。`xpath:`与`xpath=`效果一致。 该方法支持完整的 xpath 语法,能使用 xpath 直接获取元素属性,selenium 不支持这种用法。 @@ -398,11 +397,10 @@ ele2 = ele1.ele('xpath://div') txt = ele1.ele('xpath://div/@class') ``` -?> **Tips:**
-查找元素的后代时,selenium 原生代码要求 xpath 前面必须加`.`,否则会变成在全个页面中查找。笔者觉得这个设计是画蛇添足,既然已经通过元素查找了,自然应该只查找这个元素内部的元素。所以,用 xpath +?> **Tips:**
查找元素的后代时,selenium 原生代码要求 xpath 前面必须加`.`,否则会变成在全个页面中查找。笔者觉得这个设计是画蛇添足,既然已经通过元素查找了,自然应该只查找这个元素内部的元素。所以,用 xpath 在元素下查找时,最前面`//`或`/`前面的`.`可以省略。 -## selenium 的 loc 元组 +## 📍 selenium 的 loc 元组 查找方法能直接接收 selenium 原生定位元组进行查找,s 模式下也支持这种写法。 @@ -418,7 +416,7 @@ loc2 = (By.XPATH, '//div[@class="ele_class"]' ele = page.ele(loc2) ``` -# 等待 +# ✔️ 等待 d 模式下所有查找元素操作都自带等待,默认为跟随元素所在页面`timeout`属性(默认 10 秒),也可以在每次查找时单独设置,单独设置的等待时间不会改变页面原来设置。 @@ -438,20 +436,20 @@ ele2 = ele1.ele('some text') ele2 = ele1.ele('some text', timeout=1) ``` -# DOM 内相对定位 +# ✔️ DOM 内相对定位 以下方法可以以某元素为基准,在 DOM 中按照条件获取其兄弟元素、祖先元素、文档前后元素。 除获取元素外,还能通过 xpath 获取任意节点内容,如文本节点、注释节点。这在处理元素和文本节点混排的时候非常有用。 -## parent() +## 📍 `parent()` 此方法获取当前元素某一级父元素,可指定筛选条件或层数。 -参数: +**参数:** -- level_or_loc:第几级父元素,或定位符 +- `level_or_loc`:第几级父元素,或定位符 -返回: +**返回:** 某层父元素 ```python # 获取 ele1 的第二层父元素 @@ -461,17 +459,17 @@ ele2 = ele1.parent(2) ele2 = ele1.parent('#id1') ``` -## next() +## 📍 `next()` 此方法返回当前元素后面的某一个兄弟元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素后面某个兄弟元素或节点文本 +**返回:** 本元素后面某个兄弟元素或节点文本 ```python # 获取 ele1 后面第一个兄弟元素 @@ -487,16 +485,16 @@ ele2 = ele1.next(3, 'tag:div') txt = ele1.next(1, 'xpath:text()') ``` -## nexts() +## 📍 `nexts()` 此方法返回后面全部符合条件的兄弟元素或节点组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面符合条件的兄弟元素或节点文本组成的列表 +**返回:** 本元素前面符合条件的兄弟元素或节点文本组成的列表 ```python # 获取 ele1 后面所有兄弟元素 @@ -509,17 +507,17 @@ divs = ele1.nexts('tag:div') txts = ele1.nexts('xpath:text()') ``` -## prev() +## 📍 `prev()` 此方法返回当前元素前面的某一个兄弟元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面某个兄弟元素或节点文本 +**返回:** 本元素前面某个兄弟元素或节点文本 ```python # 获取 ele1 前面第一个兄弟元素 @@ -535,16 +533,16 @@ ele2 = ele1.prev(3, 'tag:div') txt = ele1.prev(1, 'xpath:text()') ``` -## prevs() +## 📍 `prevs()` 此方法返回前面全部符合条件的兄弟元素或节点组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面符合条件的兄弟元素或节点文本组成的列表 +**返回:** 本元素前面符合条件的兄弟元素或节点文本组成的列表 ```python # 获取 ele1 前面所有兄弟元素 @@ -554,17 +552,17 @@ eles = ele1.prevs() divs = ele1.prevs('tag:div') ``` -## after() +## 📍 `after()` 此方法返回当前元素后面的某一个元素,可指定筛选条件和第几个。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素后面某个元素或节点 +**返回:** 本元素后面某个元素或节点 ```python # 获取 ele1 后面第 3 个元素 @@ -577,16 +575,16 @@ ele2 = ele1.after(3, 'tag:div') txt = ele1.after(1, 'xpath:text()') ``` -## afters() +## 📍 `afters()` 此方法返回后面符合条件的全部元素或节点组成的列表,可用查询语法筛选。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素后面符合条件的元素或节点组成的列表 +**返回:** 本元素后面符合条件的元素或节点组成的列表 ```python # 获取 ele1 后所有元素 @@ -596,17 +594,17 @@ eles = ele1.afters() divs = ele1.afters('tag:div') ``` -## before() +## 📍 `before()` 此方法返回当前元素前面的某一个元素,可指定筛选条件和第几个。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面某个元素或节点 +**返回:** 本元素前面某个元素或节点 ```python # 获取 ele1 前面第 3 个元素 @@ -619,16 +617,16 @@ ele2 = ele1.before(3, 'tag:div') txt = ele1.before(1, 'xpath:text()') ``` -## befores() +## 📍 `befores()` 此方法返回前面全部符合条件的元素或节点组成的列表,可用查询语法筛选。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面符合条件的元素或节点组成的列表 +**返回:** 本元素前面符合条件的元素或节点组成的列表 ```python # 获取 ele1 前面所有元素 @@ -638,22 +636,22 @@ eles = ele1.befores() divs = ele1.befores('tag:div') ``` -# 页面布局相对定位 +# ✔️ 页面布局相对定位 以下方法用于在页面上根据显示位置定位元素。只能有在 d 模式,selenium4 版本,且 driver 版本较新的情况下才能使用。 与上面通过 DOM 定位的方法不同,这些方法只能获取元素,不能获取节点。 获取多个元素时,元素由近到远排列。 -## left() +## 📍 `left()` 此方法返回当前元素左边的某一个元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素左边的某个元素 +**返回:** 本元素左边的某个元素 ```python # 获取 ele1 左边第 3 个元素 @@ -663,15 +661,15 @@ ele2 = ele1.left(3) ele2 = ele1.left(3, 'tag:div') ``` -## lefts() +## 📍 `lefts()` 此方法返回左边全部符合条件的元素组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素左边符合条件的元素组成的列表 +**返回:** 本元素左边符合条件的元素组成的列表 ```python # 获取 ele1 左边所有元素 @@ -681,16 +679,16 @@ eles = ele1.lefts() divs = ele1.lefts('tag:div') ``` -## right() +## 📍 `right()` 此方法返回当前元素左边的某一个元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素左边的某个元素 +**返回:** 本元素左边的某个元素 ```python # 获取 ele1 左边第 3 个元素 @@ -700,15 +698,15 @@ ele2 = ele1.right(3) ele2 = ele1.right(3, 'tag:div') ``` -## rights() +## 📍 `rights()` 此方法返回右边全部符合条件的元素组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素右边符合条件的元素组成的列表 +**返回:** 本元素右边符合条件的元素组成的列表 ```python # 获取 ele1 右边所有元素 @@ -718,16 +716,16 @@ eles = ele1.rights() divs = ele1.rights('tag:div') ``` -## below() +## 📍 `below()` 此方法返回当前元素下边的某一个元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素下边的某个元素 +**返回:** 本元素下边的某个元素 ```python # 获取 ele1 下边第 3 个元素 @@ -737,15 +735,15 @@ ele2 = ele1.below(3) ele2 = ele1.below(3, 'tag:div') ``` -## belows() +## 📍 `belows()` 此方法返回下边全部符合条件的元素组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素下边符合条件的元素组成的列表 +**返回:** 本元素下边符合条件的元素组成的列表 ```python # 获取 ele1 下边所有元素 @@ -755,16 +753,16 @@ eles = ele1.belows() divs = ele1.belows('tag:div') ``` -## above() +## 📍 `above()` 此方法返回当前元素上边的某一个元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素上边的某个元素 +**返回:** 本元素上边的某个元素 ```python # 获取 ele1 上边第 3 个元素 @@ -774,15 +772,15 @@ ele2 = ele1.above(3) ele2 = ele1.above(3, 'tag:div') ``` -## aboves() +## 📍 `aboves()` 此方法返回上边全部符合条件的元素组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素上边符合条件的元素组成的列表 +**返回:** 本元素上边符合条件的元素组成的列表 ```python # 获取 ele1 上边所有元素 @@ -792,16 +790,16 @@ eles = ele1.aboves() divs = ele1.aboves('tag:div') ``` -## near() +## 📍 `near()` 此方法返回最接近当前元素的某一个元素,可指定筛选条件和第几个。 -参数: +**参数:** -- index:查询结果中的第几个 -- filter_loc:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `filter_loc`:用于筛选元素的查询语法 -返回:最接近本元素的某个元素 +**返回:** 最接近本元素的某个元素 ```python # 获取最接近 ele1 的第 3 个元素 @@ -811,15 +809,15 @@ ele2 = ele1.near(3) ele2 = ele1.near(3, 'tag:div') ``` -## nears() +## 📍 `nears()` 此方法返回该元素附近全部符合条件的元素组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 +- `filter_loc`:用于筛选元素的查询语法 -返回:本元素附近符合条件的元素组成的列表 +**返回:** 本元素附近符合条件的元素组成的列表 ```python # 获取 ele1 附近所有元素 @@ -829,13 +827,12 @@ eles = ele1.nears() divs = ele1.nears('tag:div') ``` -# `ShadowRootElement`相关查找 +# ✔️ `ShadowRootElement`相关查找 本库把 shadow-root 也作为元素对象看待,是为`ShadowRootElement`对象。对`ShadowRootElement`对象可与普通元素一样查找下级元素和 DOM 内相对定位,但不能用页面布局相对定位。 对`ShadowRootElement`对象进行相对定位时,把它看作其父对象内部的第一个对象,其余定位逻辑与普通对象一致。 -!> **注意:**
-如果`ShadowRootElement`元素的下级元素中有其它`ShadowRootElement`元素,那这些下级`ShadowRootElement` +!> **注意:**
如果`ShadowRootElement`元素的下级元素中有其它`ShadowRootElement`元素,那这些下级`ShadowRootElement` 元素内部是无法直接通过定位语句查找到的,只能先定位到其父元素,再用`shadow-root`属性获取。 ```python @@ -855,7 +852,7 @@ eles = sr_ele.nexts('tag:div') sr_ele2 = sr_ele.ele('tag:div').shadow_root ``` -# 简化写法 +# ✔️ 简化写法 为进一步精简代码,对语法进行了精简 @@ -881,16 +878,16 @@ ele2 = ele1('x://div[@class="ele_class"]') 简化写法对应列表 -| 原写法 | 简化写法 | -|:-----------:|:----:| -| text | tx | -| text() | tx() | -| tag | t | -| xpath | x | -| css | c | -| shadow_root | sr | +| 原写法 | 简化写法 | +|:-------------:|:------:| +| `text` | `tx` | +| `text()` | `tx()` | +| `tag` | `t` | +| `xpath` | `x` | +| `css` | `c` | +| `shadow_root` | `sr` | -# Tips +# ✔️ Tips - 从一个`DriverElement`元素获取到的`SessionElement`版本,依然能够使用相对定位方法定位祖先或兄弟元素。 - `SessionElement`和`SessionPage`的`ele()`和`eles()`方法也有`timeout`参数,但它是不生效的,仅用于保持与 d 模式元素书写一致,便于无差别的调用。 diff --git a/docs/MixPage使用方法/获取元素信息.md b/docs/MixPage使用方法/获取元素信息.md index 193a3df..12baffb 100644 --- a/docs/MixPage使用方法/获取元素信息.md +++ b/docs/MixPage使用方法/获取元素信息.md @@ -5,7 +5,7 @@ `ShadowRootElement`由于是 shadow dom 元素,属性比较其余两种少,下文单独介绍。 -# 示例 +# ✔️ 示例 ```python from DrissionPage import MixPage @@ -29,7 +29,7 @@ a 车载应用 https://gitee.com/explore/vehicle """ ``` -# 两种模式共有属性 +# ✔️ 两种模式共有属性 假设`ele`为以下`div`元素的对象: @@ -40,7 +40,7 @@ a 车载应用 https://gitee.com/explore/vehicle ``` -## html +## 📍 `html` 此属性返回元素的`outerHTML`文本。 @@ -54,7 +54,7 @@ html = ele.html """ ``` -## inner_html +## 📍 `inner_html` 此属性返回元素的`innerHTML`文本。 @@ -67,7 +67,7 @@ Hello World! """ ``` -## tag +## 📍 `tag` 此属性返回元素的标签名。 @@ -76,7 +76,7 @@ tag = ele.tag # 返回:div ``` -## text +## 📍 `text` 此属性返回元素内所有文本组合成的字符串。 该字符串已格式化,即已转码,已去除多余换行符,符合人读取习惯,便于直接使用。无须重复写处理代码。 @@ -89,7 +89,7 @@ Hello World! """ ``` -## raw_text +## 📍 `raw_text` 此属性返回元素内原始文本。 @@ -103,15 +103,15 @@ Hello World! """ ``` -## texts() +## 📍 `texts()` 此方法返回元素内所有直接子节点的文本,包括元素和文本节点。 它有一个参数`text_node_only`,为`True`时则只获取只返回文本节点。这个方法适用于获取文本节点和元素节点混排的情况。 -参数: +**参数:** -- text_node_only:是否只返回文本节点 +- `text_node_only`:是否只返回文本节点 -返回:文本列表 +**返回:** 文本列表 ```python texts = ele.texts() @@ -122,14 +122,14 @@ print(e.texts()) # 输出:['Hello World!'] ``` -## comments +## 📍 `comments` ```python comments = ele.comments # 返回:[] ``` -## attrs +## 📍 `attrs` 此属性以字典形式返回元素所有属性及值。 @@ -138,23 +138,23 @@ attrs = ele.attrs # 返回:{'id': 'div1'} ``` -## attr() +## 📍 `attr()` 此方法返回元素某个`attribute`属性值。它接收一个字符串参数`attr`,返回该属性值文本,无该属性时返回`None`。 此属性返回的`src`、`href`属性为已补充完整的路径。`text`属性为已格式化文本,`innerText`属性为未格式化文本。 -参数: +**参数:** -- attr:属性名称 +- `attr`:属性名称 -返回:属性值文本 +**返回:** 属性值文本 ```python ele_id = ele.attr('id') # 返回:div1 ``` -## link +## 📍 `link` 此方法返回元素的 href 属性或 src 属性,没有这两个属性则返回`None`。 @@ -169,7 +169,7 @@ link = a_ele.link # 返回:http://www.baidu.com ``` -## page +## 📍 `page` 此属性返回元素所在的页面对象。 @@ -180,7 +180,7 @@ link = a_ele.link page = ele.page ``` -## inner_ele +## 📍 `inner_ele` 此属性返回被当前元素包装的对应模式原本的元素对象。 d 模式包装的是一个 selenium 的`WebElement`对象,s 模式包装的是一个 lxml 的`HtmlElement`对象。 @@ -193,7 +193,7 @@ web_ele = ele.inner_ele web_ele.find_element(By.ID, 'ele_id').click() ``` -## xpath +## 📍 `xpath` 此属性返回当前元素在页面中 xpath 的绝对路径。 @@ -202,7 +202,7 @@ xpath = ele.xpath # 返回:/html/body/div ``` -## css_path +## 📍 `css_path` 此属性返回当前元素在页面中 css selector 的绝对路径。 @@ -211,21 +211,21 @@ css = ele.css_path # 返回::nth-child(1)>:nth-child(1)>:nth-child(1) ``` -## is_valid() +## 📍 `is_valid()` 此方法返回当前元素是否可用。`SessionElement`始终返回`True`,`DriverElement`视乎元素是否还在 DOM 内返回布尔值。 -参数:无 +**参数:** 无 -返回:`bool`类型 +**返回:**`bool`类型 ```python is_valid = ele.is_valid() ``` -# DriverElement 独有属性 +# ✔️ DriverElement 独有属性 -## size +## 📍 `size` 此属性以字典形式返回元素的大小。 @@ -234,7 +234,7 @@ size = ele.size # 返回:{'height': 50, 'width': 50} ``` -## location +## 📍 `location` 此属性以字典形式返回元素坐标。 @@ -243,7 +243,7 @@ loc = ele.location # 返回:{'x': 50, 'y': 50} ``` -## pseudo_before +## 📍 `pseudo_before` 此属性以文本形式返回当前元素的`::before`伪元素内容。 @@ -251,7 +251,7 @@ loc = ele.location before_txt = ele.pseudo_before ``` -## pseudo_after +## 📍 `pseudo_after` 此属性以文本形式返回当前元素的`::after`伪元素内容。 @@ -259,16 +259,16 @@ before_txt = ele.pseudo_before after_txt = ele.pseudo_after ``` -## style() +## 📍 `style()` 该方法返回元素 css 样式属性值,可获取伪元素的属性。它有两个参数,`style`参数输入样式属性名称,`pseudo_ele`参数输入伪元素名称,省略则获取普通元素的 css 样式属性。 -参数: +**参数:** -- style:样式名称 -- pseudo_ele: 伪元素名称(如有) +- `style`:样式名称 +- `pseudo_ele`:伪元素名称(如有) -返回:样式属性值 +**返回:** 样式属性值 ```python # 获取 css 属性的 color 值 @@ -278,92 +278,92 @@ prop = ele.style('color') prop = ele.style('content', 'after') ``` -## prop() +## 📍 `prop()` 此方法返回`property`属性值。它接收一个字符串参数,返回该参数的属性值。 -参数: +**参数:** -- prop:属性名称 +- `prop`:属性名称 -返回:属性值 +**返回:** 属性值 ```python prop = ele.prop('value') ``` -## select +## 📍 `select` 此属性返回 `select` 元素用于处理下拉列表的 Select 类(“[元素操作](元素操作.md)”章节说明),非下拉列表元素返回`False`。 -## is_selected() +## 📍 `is_selected()` 此方法以布尔值返回元素是否选中。 -参数:无 +**参数:** 无 -返回:布尔值 +**返回:** `bool` ```python selected = ele.is_selected() ``` -## is_enabled() +## 📍 `is_enabled()` 此方法以布尔值返回元素是否可用。 -参数:无 +**参数:** 无 -返回:布尔值 +**返回:**`bool` ```python enable = ele.is_enabled() ``` -## is_displayed() +## 📍 `is_displayed()` 此方法以布尔值返回元素是否可见。 -参数:无 +**参数:** 无 -返回:布尔值 +**返回:**`bool` ```python displayed = ele.is_displayed() ``` -# `ShadowRootElement`属性与方法 +# ✔️ `ShadowRootElement`属性与方法 本库把 shadow dom 的`root`看作一个元素处理,可以获取属性,也可以执行其下级的查找,但其属性比较少。有如下这些: -## tag +## 📍 `tag` 此属性返回元素标签名,即`'shadow-root'`。 -## html +## 📍 `html` 此属性返回`shadow_root`的 html 文本,由`` 标签包裹。 -## inner_html +## 📍 `inner_html` 此属性返回`shadow_root`内部的 html 文本。 -## page +## 📍 `page` 此属性返回元素所在页面对象。 -## inner_ele +## 📍 `inner_ele` 此属性返回对象中保存的`shadow-root`元素。 -## parent_ele +## 📍 `parent_ele` 这是`ShadowRootElement`独有的属性,返回它所依附的普通元素对象。 -## is_enabled() +## 📍 `is_enabled()` 与`DriverElement`一致。 -## is_valid() +## 📍 `is_valid()` 与`DriverElement`一致。 diff --git a/docs/MixPage使用方法/获取网页信息.md b/docs/MixPage使用方法/获取网页信息.md index 2498d03..1613dd7 100644 --- a/docs/MixPage使用方法/获取网页信息.md +++ b/docs/MixPage使用方法/获取网页信息.md @@ -1,42 +1,42 @@ 本节介绍获取页面对象各种信息的属性和方法。 -# 两种模式共有属性 +# ✔️ 两种模式共有属性 -## url +## 📍 `url` 此属性返回当前访问的 url。 -## mode +## 📍 `mode` 此属性返回当前页面对象的模式,`'s'`或`'d'`。 -## drission +## 📍 `drission` 此属性返回当前页面对象使用的`Drission`对象。 -## driver +## 📍 `driver` 此属性返回当前页面对象使用的`WebDriver`对象。访问时会自动切换到 d 模式。 -## session +## 📍 `session` 此属性返回当前页面对象使用的`Session`对象。访问时不会切换模式。 -## cookies +## 📍 `cookies` 此属性以`dict`方式返回当前页面所使用的 cookies。 d 模式只返回当前标签页的 cookies,s 模式则只返回当前访问的 url 的`cookies`。 -## get_cookies() +## 📍 `get_cookies()` 此方法获取 cookies 并以 cookie 组成的`list`形式返回。 -参数: +**参数:** -- as_dict:是否以字典方式返回,为`False`返回`cookie`组成的`list` -- all_domains:是否返回所有域的`cookies`,只有 s 模式下生效 +- `as_dict`:是否以字典方式返回,为`False`返回`cookie`组成的`list` +- `all_domains`:是否返回所有域的`cookies`,只有 s 模式下生效 -返回:`cookies`信息 +**返回:**`cookies`信息 ```python from DrissionPage import MixPage @@ -58,15 +58,15 @@ for i in p.get_cookies(as_dict=False, all_domains=True): ...... ``` -## html +## 📍 `html` 此属性返回当前页面 html 文本。 -## title +## 📍 `title` 此属性返回当前页面`title`文本。 -## timeout +## 📍 `timeout` s 模式下,此属性代表网络请求超时时间。 d 模式下,此属性为元素查找、点击、处理提示框等操作的超时时间。 @@ -80,7 +80,7 @@ page = MixPage(timeout=5) page.timeout = 20 ``` -## retry_times +## 📍 `retry_times` 此参数为网络连接失败时的重试次数。默认为 3,可对其赋值。 @@ -89,7 +89,7 @@ page.timeout = 20 page.retry_times = 5 ``` -## retry_interval +## 📍 `retry_interval` 此参数为网络连接失败时的重试等待间隔秒数。默认为 2,可对其赋值。 @@ -98,15 +98,15 @@ page.retry_times = 5 page.retry_interval = 1.5 ``` -## url_available +## 📍 `url_available` 此属性以布尔值返回当前链接是否可用。 s 模式下根据`Response`对象的`status_code`判断。 d 模式根据`check_page()`方法返回值判断。 -# s 模式独有属性 +# ✔️ s 模式独有属性 -## response +## 📍 `response` 此属性为 s 模式请求网站后生成的`Response`对象,本库没实现的功能可直接获取此属性调用 requests 库的原生功能。 @@ -116,15 +116,15 @@ r = page.response print(r.status_code) ``` -## json +## 📍 `json` 此属性把请求内容解析成 json。 比如请求接口时,返回内容是 json 格式,那就可以用这个属性获取。 事实上,用 html 属性获取也是可以的,不过 html 属性没有对文本进行解析。 -# d 模式独有属性 +# ✔️ d 模式独有属性 -## timeouts +## 📍 `timeouts` 此属性以字典方式返回三种超时时间,selenium 4 以上版本可用。 `'implicit'`用于元素查找、点击重试、输入文本重试、处理弹出框重试等; @@ -141,41 +141,41 @@ print(page.timeouts) {'implicit': 10, 'pageLoad': 30.0, 'script': 30.0} ``` -## tabs_count +## 📍 `tabs_count` 此属性返回当前浏览器标签页数量。 -## tab_handles +## 📍 `tab_handles` 此属性以列表形式返回当前浏览器所有标签页的 handle。 !> **注意:** 以下情况会导致获取到的顺序与视觉效果不一致:1、自动化过程中手动点击标签页;2、浏览器被接管时已打开一个以上标签页。 -## current_tab_index +## 📍 `current_tab_index` 此属性返回当前标签页的序号。 !> **注意:**
以下情况会导致获取到的排序号与视觉效果不一致:1、自动化过程中手动点击标签页;2、浏览器被接管时已打开一个以上标签页。 -## current_tab_handle +## 📍 `current_tab_handle` 此属性返回当前标签页的 handle。 -## active_ele +## 📍 `active_ele` 此属性返回当前页面上焦点所在元素。类型为`DriverElement`。 -## wait_obj +## 📍 `wait_obj` 此属性返回当前页面对象用于等待的对象。 -## chrome_downloading() +## 📍 `chrome_downloading()` 此方法返回浏览器下载中的文件列表。 -参数: +**参数:** -- path: 下载文件夹路径,默认从配置信息读取 +- `path:` 下载文件夹路径,默认从配置信息读取 -返回:下载中的文件列表 +**返回:** 下载中的文件列表 diff --git a/docs/MixPage使用方法/访问网页.md b/docs/MixPage使用方法/访问网页.md index 80edb2c..6b5192e 100644 --- a/docs/MixPage使用方法/访问网页.md +++ b/docs/MixPage使用方法/访问网页.md @@ -1,23 +1,23 @@ 操作页面前通常要先跳转到目标 url(接管现有浏览器除外),本库访问网页主要支持`get()`和`post()`两种方式,还支持自动重试。 -# get() +# ✔️ `get()` 该方法在 d 模式和 s 模式下都可用,用于跳转到一个网址。 当连接失败时,程序默认重试 3 次,每次间隔 2 秒,也可以通过参数设置重试次数和间隔。 在 s 模式下,可传入连接参数,语法与 requests 的`get()`方法一致。 方法返回是否连接成功的布尔值,s 模式下根据`Response`对象的`status_code`参数决定,d 模式下根据浏览器的状态,还可以通过重写`check_page()`方法实现自定义检查方式。 -参数: +**参数:** -- url:目标 url -- show_errmsg:是否显示和抛出异常,默认不抛出,连接错误会返回`None` -- retry:重试次数,与页面对象的设置一致,默认 3 次 -- interval:重试间隔(秒),与页面对象的设置一致,默认 2 秒 -- **kwargs:连接参数,s 模式专用,与 requests 的使用方法一致 +- `url`:目标 url +- `show_errmsg`:是否显示和抛出异常,默认不抛出,连接错误会返回`None` +- `retry`:重试次数,与页面对象的设置一致,默认 3 次 +- `interval`:重试间隔(秒),与页面对象的设置一致,默认 2 秒 +- `**kwargs`:连接参数,s 模式专用,与 requests 的使用方法一致 -返回:`bool`类型,表示是否连接成功,d 模式下如返回`None`表示不确定 +**返回:**`bool`类型,表示是否连接成功,d 模式下如返回`None`表示不确定 -## d 模式 +## 📍 d 模式 ```python from DrissionPage import MixPage @@ -26,7 +26,7 @@ page = MixPage('d') page.get('https://www.baidu.com') ``` -## s 模式 +## 📍 s 模式 s 模式的`**kwargs`参数与 requests 中该参数使用方法一致,但有一个特点,如果该参数中设置了某一项(如`headers`),该项中的每个项会覆盖从配置中读取的同名项,而不会整个覆盖。 就是说,如果想继续使用配置中的`headers`信息,而只想修改其中一项,只需要传入该项的值即可。这样可以简化代码逻辑。 @@ -48,19 +48,19 @@ proxies = {'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'} page.get(url, headers=headers, cookies=cookies, proxies=proxies) ``` -# post() +# ✔️ `post()` 此方法是用 post 方式请求页面。大致用法与`get()`一致,但增加一个`data`参数。 此方法只有 s 模式拥有,调用时,页面对象会自动切换到 s 模式。 -参数: +**参数:** -- url:目标 url -- data:提交的数据,可以是`dict`或`str`类型 -- show_errmsg:是否显示和抛出异常,默认不抛出,连接错误会返回 None -- retry:重试次数,与页面对象的设置一致,默认 3 次 -- interval:重试间隔(秒),与页面对象的设置一致,默认 2 秒 -- **kwargs:连接参数,s 模式专用 +- `url`:目标 url +- `data`:提交的数据,可以是`dict`或`str`类型 +- `show_errmsg`:是否显示和抛出异常,默认不抛出,连接错误会返回 None +- `retry`:重试次数,与页面对象的设置一致,默认 3 次 +- `interval`:重试间隔(秒),与页面对象的设置一致,默认 2 秒 +- `**kwargs`:连接参数,s 模式专用 ?> **Tips:**
虽然参数里没有`json`参数,但也和 requests 一样可以对`json`参数传值。 @@ -91,7 +91,7 @@ page.post(url, json='xxx') page.post(url, json={'xxx': 'xxx'}) ``` -# 其它请求方式 +# ✔️ 其它请求方式 本库只针对常用的 get 和 post 方式作了优化,但也可以通过提取页面对象内的`Session`对象以原生 requests 代码方式执行其它请求方式。当然,它们工作在 s 模式。 diff --git a/docs/MixPage使用方法/页面操作.md b/docs/MixPage使用方法/页面操作.md index a927a77..c4da87f 100644 --- a/docs/MixPage使用方法/页面操作.md +++ b/docs/MixPage使用方法/页面操作.md @@ -1,28 +1,24 @@ 本节介绍页面对象可以使用的方法,有些方法是两种模式共有的,有些只有某种模式可以使用。当调用独有方法时,会自动切换到该模式。如调用`post()`方法时,会先切换到 s 模式,并同步登录信息。 -# 两种模式共有的方法 +# ✔️ 两种模式共有的方法 -## get() +## 📍 `get()` -此方法用于跳转到一个 url,详细用法见“[使用方法 -> 访问网页](使用方法/访问网页.md)”章节。 +此方法用于跳转到一个 url,详细用法见“访问网页”章节。 -## ele()、eles()、s_ele()、s_eles() - -这些方法用于在页面中查找元素,详细用法见“[使用方法 -> 查找页面元素](使用方法/查找页面元素)”章节。 - -## change_mode() +## 📍 `change_mode()` 此方法用于转换`MixPage`对象的模式。 切换后默认在目标模式重新跳转到原模式所在 url。 !> **注意:**
s 模式转 d 模式时,若浏览器当前网址域名和 s 模式不一样,必定会跳转。 -参数: +**参数:** -- mode:目标模式字符串,`'s'`或`'d'`,默认转换到另一种 -- go:转换后是否跳转到原模式所在 url +- `mode`:目标模式字符串,`'s'`或`'d'`,默认转换到另一种 +- `go`:转换后是否跳转到原模式所在 url -返回:`None` +**返回:**`None` ```python from DrissionPage import MixPage @@ -60,106 +56,106 @@ print('登录后title:', page.title) 登录后title: 个人资料 - 码云 Gitee.com ``` -## set_cookies() +## 📍 `set_cookies()` 此方法用于设置`cookies`。 可以接收`CookieJar`、`list`、`tuple`、`str`、`dict`格式的`cookies`。 -参数: +**参数:** -- cookies:`cookies`信息 -- refresh:设置`cookies`后是否刷新页面 +- `cookies`:`cookies`信息 +- `refresh`:设置`cookies`后是否刷新页面 -返回:`None` +**返回:**`None` ```python cookies = {'name': 'abc'} page.set_cookies(cookies) ``` -## cookies_to_session() +## 📍 `cookies_to_session()` 此方法用于从`WebDriver`对象复制`cookies`到`Session`对象。 -参数: +**参数:** -- copy_user_agent:是否同时复制 user agent 信息 +- `copy_user_agent`:是否同时复制 user agent 信息 -返回:`None` +**返回:**`None` -## cookies_to_driver() +## 📍 `cookies_to_driver()` 此方法用于从`Session`对象复制`cookies`到`WebDriver`对象。 -参数: +**参数:** -- url:指定 url,默认用当前 url +- `url`:指定 url,默认用当前 url -返回:`None` +**返回:**`None` -## download() +## 📍 `download()` -此方法用于下载文件,详细用法见“[使用方法 -> 下载文件](下载文件.md)”章节。 +此方法用于下载文件,详细用法见“下载文件”章节。 -## close_driver() +## 📍 `close_driver()` 此方法用于关闭`WebDriver`对象和浏览器。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## close_session() +## 📍 `close_session()` 此方法用于关闭`Session`对象。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -# s 模式独有方法 +# ✔️ s 模式独有方法 -## post() +## 📍 `post()` -此方法用于以 post 方式访问 url,具体用法见“[使用方法 -> 访问网页](访问网页.md)”章节。 +此方法用于以 post 方式访问 url,具体用法见“访问网页”章节。 -# d 模式独有方法 +# ✔️ d 模式独有方法 -## hide_browser() +## 📍 `hide_browser()` 此方法用于隐藏浏览器进程窗口,非最小化,任务栏上也可隐藏。 但若操作过程中有新增标签页,浏览器会重新出现。 只支持 Windows 系统,且只有设置了`local_port`或`debugger_address`时生效。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## show_browser() +## 📍 `show_browser()` 此方法用于显示被隐藏的浏览器进程。 只支持 Windows 系统,且只有设置了`local_port`或`debugger_address`时生效。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## wait_ele() +## 📍 `wait_ele()` 此方法用于等待元素到达某种状态。 调用此方法返回一个`ElementWaiter`对象,调用该对象方法实现各种方式的等待。 -参数: +**参数:** -- loc_or_ele:要等待的元素,可以是元素或定位符 -- timeout:等待超时时间,默认使用页面超时时间 +- `loc_or_ele`:要等待的元素,可以是元素或定位符 +- `timeout`:等待超时时间,默认使用页面超时时间 -方法: +**方法:** -| 方法 | 参数说明 | 功能 | -|:---------:|:----:|:------------:| -| display() | 无 | 等待元素从 DOM 显示 | -| hidden() | 无 | 等待元素从 DOM 隐藏 | -| delete() | 无 | 等待元素从 DOM 删除 | +| 方法 | 参数说明 | 功能 | +|:-----------:|:----:|:------------:| +| `display()` | 无 | 等待元素从 DOM 显示 | +| `hidden()` | 无 | 等待元素从 DOM 隐藏 | +| `delete()` | 无 | 等待元素从 DOM 删除 | 这些方法返回布尔值,代表是否等待成功。 @@ -175,148 +171,148 @@ ele = page.ele('#div1') paeg.wait_ele(ele).hidden() ``` -## run_script() +## 📍 `run_script()` 此方法用于执行 js 脚本。 -参数: +**参数:** -- script:js 脚本文本 -- *args:传入的参数 +- `script`:js 脚本文本 +- `*args`:传入的参数 -返回:脚本执行结果 +**返回:** 脚本执行结果 ```python # 执行 js 脚本显示弹出框显示 Hello world! page.run_script('alert(arguments[0]+arguments[1])', 'Hello', ' world!') ``` -## run_async_script() +## 📍 `run_async_script()` 此方法用于以异步方式执行 js 脚本。 -参数: +**参数:** -- script:js 脚本文本 -- *args:传入的参数 +- `script`:js 脚本文本 +- `*args`:传入的参数 -返回:脚本执行结果 +**返回:** 脚本执行结果 -## run_cdp() +## 📍 `run_cdp()` 此方法用于执行 Chrome DevTools Protocol 语句。cdp 用法详见[Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/)。 -参数: +**参数:** -- cmd:协议项目方法 +- `cmd`:协议项目方法 -- **cmd_args:项目参数 +- `**cmd_args`:项目参数 -返回:该语句返回的值 +**返回:** 该语句返回的值 ```python # 停止页面加载 page.run_cdp('Page.stopLoading') ``` -## set_timeouts() +## 📍 `set_timeouts()` 此方法用于设置三种超时时间,selenium 4 以上版本生效。 -参数: +**参数:** -- implicit:查找元素超时时间 -- pageLoad:页面加载超时时间 -- script:脚本运行超时时间 +- `implicit`:查找元素超时时间 +- `pageLoad`:页面加载超时时间 +- `script`:脚本运行超时时间 -返回:`None` +**返回:**`None` -## set_ua_to_tab() +## 📍 `set_ua_to_tab()` 此方法用于为当前 tab 设置 user agent,只在当前 tab 有效。 -参数: +**参数:** -- ua:user agent字符串 +- `ua`:user agent字符串 -返回:None +**返回:**`None` -## get_session_storage() +## 📍 `get_session_storage()` 此方法用于获取 sessionStorage 信息,可获取全部或单个项。 -参数: +**参数:** -- item:要获取的项,不设置则返回全部 +- `item`:要获取的项,不设置则返回全部 -返回:sessionStorage 一个或所有项内容 +**返回:** sessionStorage 一个或所有项内容 -## get_local_storage() +## 📍 `get_local_storage()` 此方法用于获取 localStorage 信息,可获取全部或单个项。 -参数: +**参数:** -- item:要获取的项,不设置则返回全部 +- `item`:要获取的项,不设置则返回全部 -返回:localStorage 一个或所有项内容 +**返回:** localStorage 一个或所有项内容 -## set_session_storage() +## 📍 `set_session_storage()` 此方法用于设置或删除某项 sessionStorage 信息。 -参数: +**参数:** -- item:要设置的项 +- `item`:要设置的项 -- value:项的值,设置为False时,删除该项 +- `value`:项的值,设置为False时,删除该项 -返回:`None` +**返回:**`None` -## set_local_storage() +## 📍 `set_local_storage()` 此方法用于设置或删除某项 localStorage 信息。 -参数: +**参数:** -- item:要设置的项 +- `item`:要设置的项 -- value:项的值,设置为False时,删除该项 +- `value`:项的值,设置为False时,删除该项 -返回:`None` +**返回:**`None` -## clean_cache() +## 📍 clean_cache() 此方法用于清除缓存,可选要清除的项。 -参数: +**参数:** -- session_storage:是否清除 sessionstorage +- `session_storage`:是否清除 sessionstorage -- local_storage:是否清除 localStorage +- `local_storage`:是否清除 localStorage -- cache:是否清除 cache +- `cache`:是否清除 cache -- cookies:是否清除 cookies +- `cookies`:是否清除 cookies -返回:`None` +**返回:**`None` -## to_frame +## 📍 `to_frame` 此属性用于将页面焦点移到某个`frame`或`iframe`。 调用此属性返回一个`ToFrame`对象,调用该对象的方法实现焦点转移。 这些方法返回值为当前页面对象,可实现下一步的链式操作。 -| 方法 | 参数说明 | 功能 | -|:---------------:|:-------:|:----------------:| -| main() | 无 | 切换到顶层框架 | -| parent(level) | 第几层上级框架 | 切换到上级框架,可指定多层 | -| by_id(id) | id 属性 | 切换到`id`为该参数的框架 | -| by_name(name) | name 属性 | 切换到`name`为该参数的框架 | -| by_index(index) | 序号 | 切换到页面第几个框架,0 开始 | -| by_loc(loc) | 定位符 | 切换到定位符所指框架 | -| by_ele(ele) | 框架元素 | 传入框架元素,切换到该框架 | +| 方法 | 参数说明 | 功能 | +|:-----------------:|:-------:|:----------------:| +| `main()` | 无 | 切换到顶层框架 | +| `parent(level)` | 第几层上级框架 | 切换到上级框架,可指定多层 | +| `by_id(id)` | id 属性 | 切换到`id`为该参数的框架 | +| `by_name(name)` | name 属性 | 切换到`name`为该参数的框架 | +| `by_index(index)` | 序号 | 切换到页面第几个框架,0 开始 | +| `by_loc(loc)` | 定位符 | 切换到定位符所指框架 | +| `by_ele(ele)` | 框架元素 | 传入框架元素,切换到该框架 | ```python # 切换到主框架 @@ -362,18 +358,17 @@ iframe = page.ele('tag:iframe') page.to_frame(iframe) ``` -!> **注意:**
-新版本删除了`to_frame('main')`和`to_frame('parent')`的用法。
请改用`page.to_frame.main()`和`page.to_frame.parent()`的写法。 +!> **注意:**
新版本删除了`to_frame('main')`和`to_frame('parent')`的用法。
请改用`page.to_frame.main()`和`page.to_frame.parent()`的写法。 -## to_tab() +## 📍 `to_tab()` 此方法把焦点定位到某个标签页。 -参数: +**参数:** -- num_or_handle:标签页序号或 handle 字符串,序号第一个为 0,最后为 -1 +- `num_or_handle`:标签页序号或 handle 字符串,序号第一个为 0,最后为 -1 -返回:None +**返回:**`None` !> **注意:**
以下情况会导致获取到的排序号与视觉效果不一致:1、自动化过程中手动点击标签页;2、浏览器被接管时已打开一个以上标签页。 @@ -385,31 +380,31 @@ page.to_tab(0) page.to_tab('xxxxxxxxxxxxxxxxxxxx') ``` -## create_tab() +## 📍 `create_tab()` 此方法用于新建并定位到一个标签页,该标签页在最后面。可指定跳转到一个 url。 -参数: +**参数:** -- url:新标签页跳转到的 url +- `url`:新标签页跳转到的 url -返回:`None` +**返回:**`None` ```python page.create_tab('http://www.baidu.com') ``` -## close_tabs() +## 📍 `close_tabs()` 此方法用于关闭指定的标签页,标签页可以是序号或 handle 值,可关闭多个。默认关闭当前的。 !> **注意:**
以下情况会导致获取到的排序号与视觉效果不一致,不能按序号关闭:1、自动化过程中手动点击标签页;2、浏览器被接管时已打开一个以上标签页。 -参数: +**参数:** -- num_or_handles:要保留的标签页序号或 handle,可传入 list 或 tuple,为None时关闭当前页 +- `num_or_handles`:要保留的标签页序号或 handle,可传入 list 或 tuple,为None时关闭当前页 -返回:`None` +**返回:**`None` ```python # 关闭当前标签页 @@ -419,17 +414,17 @@ page.close_tabs() page.close_tabs((0, 2)) ``` -## close_other_tabs() +## 📍 `close_other_tabs()` 此方法用于关闭指定标签页以外的标签页,标签页可以是序号或 handle 值,可保留多个。默认保留当前的。 !> **注意:**
以下情况会导致获取到的排序号与视觉效果不一致,不能按序号关闭:1、自动化过程中手动点击标签页;2、浏览器被接管时已打开一个以上标签页。 -参数: +**参数:** -- num_or_handles:要保留的标签页序号或 handle,可传入`list`或`tuple`,为`None`时关闭当前页 +- `num_or_handles`:要保留的标签页序号或 handle,可传入`list`或`tuple`,为`None`时关闭当前页 -返回:`None` +**返回:**`None` ```python # 关闭除当前标签页外的所有标签页 @@ -443,23 +438,23 @@ reserve_list = ('aaaaa', 'bbbbb') page.close_other_tabs(reserve_list) ``` -## scroll +## 📍 `scroll` 此属性用于以某种方式滚动页面。 调用此属性返回一个`Scroll`对象,调用该对象方法实现各种方式的滚动。 -| 方法 | 参数说明 | 功能 | -|:-----------------:|:------:|:----------------:| -| to_top() | 无 | 滚动到顶端,水平位置不变 | -| to_bottom() | 无 | 滚动到底端,水平位置不变 | -| to_half() | 无 | 滚动到垂直中间位置,水平位置不变 | -| to_rightmost() | 无 | 滚动到最右边,垂直位置不变 | -| to_leftmost() | 无 | 滚动到最左边,垂直位置不变 | -| to_location(x, y) | 滚动条坐标值 | 滚动到指定位置 | -| up(pixel) | 滚动的像素 | 向上滚动若干像素,水平位置不变 | -| down(pixel) | 滚动的像素 | 向下滚动若干像素,水平位置不变 | -| right(pixel) | 滚动的像素 | 向左滚动若干像素,垂直位置不变 | -| left(pixel) | 滚动的像素 | 向右滚动若干像素,垂直位置不变 | +| 方法 | 参数说明 | 功能 | +|:-------------------:|:------:|:----------------:| +| `to_top()` | 无 | 滚动到顶端,水平位置不变 | +| `to_bottom()` | 无 | 滚动到底端,水平位置不变 | +| `to_half()` | 无 | 滚动到垂直中间位置,水平位置不变 | +| `to_rightmost()` | 无 | 滚动到最右边,垂直位置不变 | +| `to_leftmost()` | 无 | 滚动到最左边,垂直位置不变 | +| `to_location(x, y)` | 滚动条坐标值 | 滚动到指定位置 | +| `up(pixel)` | 滚动的像素 | 向上滚动若干像素,水平位置不变 | +| `down(pixel)` | 滚动的像素 | 向下滚动若干像素,水平位置不变 | +| `right(pixel)` | 滚动的像素 | 向左滚动若干像素,垂直位置不变 | +| `left(pixel)` | 滚动的像素 | 向右滚动若干像素,垂直位置不变 | ```python # 页面滚动到底部 @@ -475,15 +470,15 @@ page.scroll.down(200) page.scroll.to_location(100, 300) ``` -## scroll_to_see() +## 📍 `scroll_to_see()` 此方法用于滚动页面直到元素可见。 -参数: +**参数:** -- loc_or_ele:元素的定位信息,可以是元素、定位符 +- `loc_or_ele`:元素的定位信息,可以是元素、定位符 -返回:`None` +**返回:**`None` ```python # 滚动到某个已获取到的元素 @@ -497,68 +492,68 @@ page.scroll_to_see('tag:div') page.scroll_to_see((By.XPATH, '//div')) ``` -## refresh() +## 📍 `refresh()` 此方法用于刷新当前页面。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## stop_loading() +## 📍 `stop_loading()` 此方法用于强制当前页面加载。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## back() +## 📍 `back()` 此方法用于在浏览历史中后退一步。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## forward() +## 📍 `forward()` 此方法用于在浏览历史中前进一步。 -参数:无 +**参数:** 无 -返回:`None` +**返回:**`None` -## screenshot() +## 📍 `screenshot()` 此方法用于生成页面可见范围截图。图片为 png 格式。 此方法能够自动处理文件重命名的情况,给新文件后面增加序号。 也可以返回图片的二进制文本。 -参数: +**参数:** -- path:图片保存路径 -- filename:图片文件名,可不写后缀,不传入时以页面 title 命名 -- as_bytes:是否已字节形式返回图片,为True时上面两个参数失效 +- `path`:图片保存路径 +- `filename`:图片文件名,可不写后缀,不传入时以页面 title 命名 +- `as_bytes`:是否已字节形式返回图片,为True时上面两个参数失效 -返回:图片完整路径或字节文本 +**返回:** 图片完整路径或字节文本 ```python path = page.screenshot(r'D:\tmp', 'img1') # 保存到路径,文件名为img1.png bytes = page.screenshot(as_bytes=True) # 返回截图二进制文本 ``` -## set_window_size() +## 📍 `set_window_size()` 此方法用于设置浏览器窗口大小。 默认最大化,任一参数为 0 最小化。 -参数: +**参数:** -- height:浏览器窗口高度 -- width:浏览器窗口宽度 +- `height`:浏览器窗口高度 +- `width`:浏览器窗口宽度 -返回:None +**返回:**`None` ```python # 窗口最大化 @@ -571,19 +566,19 @@ page.set_window_size(0) page.set_window_size(800, 600) ``` -## process_alert() +## 📍 `process_alert()` 此方法 用于处理提示框。 它能够设置等待时间,等待提示框出现才进行处理,若超时没等到提示框,返回`None`。 它可只获取提示框文本而不处理提示框。 -参数: +**参数:** -- ok:`True`表示确认,`False`表示取消,其它值不会按按钮但依然返回文本值 -- send:处理 prompt 提示框时可输入文本 -- timeout:等待提示框出现的超时时间 +- `ok`:`True`表示确认,`False`表示取消,其它值不会按按钮但依然返回文本值 +- `send`:处理 prompt 提示框时可输入文本 +- `timeout`:等待提示框出现的超时时间 -返回:提示框内容文本,未等到提示框则返回`None` +**返回:** 提示框内容文本,未等到提示框则返回`None` ```python # 确认提示框并获取提示框文本 @@ -599,7 +594,7 @@ paeg.process_alert(True, 'some text') txt = page.process_alert(None) ``` -## check_page() +## 📍 `check_page()` 此方法用于检查页面是否符合预期,它默认返回`None`,须由子类实现其功能。 用于 POM 模式时,可派生各种页面子类,从而实现检查页面的功能。 diff --git a/docs/README.md b/docs/README.md index 8f5571b..fbdb2c0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -96,4 +96,4 @@ DrissionPage,即 driver 和 session 组合而成的 page。 如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :) -![](https://gitee.com/g1879/DrissionPage-demos/raw/master/pics/code.jpg) +![](imgs/code.jpg) diff --git a/docs/Tips大集合.md b/docs/Tips大集合.md deleted file mode 100644 index a70baef..0000000 --- a/docs/Tips大集合.md +++ /dev/null @@ -1,26 +0,0 @@ -## 全局 - -- 切换模式时会自动复制`cookies`到目标模式,并在目标模式下重新访问当前网址,可在参数中禁止自动访问。 -- 访问网址时如遇到异常,会自动重试 3 次,也可在对象属性或连接参数里设置重试次数和间隔时间。d 模式这个功能要重载了`check_page()`方法才有效。 -- 获取到的文本会自动替换` `为空格。 -- 可以在元素下直接使用`>`以 css selector 方式获取当前元素直接子元素。如`ele1.ele('css:>div')`。原生不支持这种写法。 -- 用 xpath 获取元素的子元素时,可省略前面的`.`。如`ele1.ele('div')`和`ele1.ele('.//div')`是一致的。 -- 保存空的配置对象时,如没有指定路径,会保存到默认 ini 文件。 -- `download()`方法会自动创建`goal_path`参数的文件夹,因此可直接传入不存在的文件夹路径。 -- `set_cookies()`可以接收`RequestsCookieJar`、`list`、`tuple`、`str`、`dict`,只要格式对扔进去它会自动调整。其中`list`和`tuple`的内容可为`Cookie`、`dict`、`str`。 - -## s 模式 - -- 在创建`MixPage`对象时传入的`Session`配置是全局有效的,一般无须每次连接传入。 -- ini 文件里设置了默认 s 模式的`headers`,一般情况可直接使用,也可手动设置。 -- s 模式访问网页时会自动纠正编码,具体为先从`headers`获取,再从页面`meta`标签获取,都找不到就执行`r.apparent_encoding`。因此无须手动设置。 -- 如果没有传入`referer`和`host`值,s 模式在连接时会自动根据当前域名自动填写`Host`和`Referer`属性。 - -## d 模式 - -- d 模式查找元素默认设置等待超时 10 秒,10 秒内找到立即返回元素,超时返回`None`。也可指定超时时间。 -- `cilck()`方法用 selenium 点击失败时会用 js 方式重试,也可在参数里指定直接用 js 或不用 js 重试。 -- `click()`方法可设置`timeout`参数,在时间内会不断重试点击目标,`click(by_js=False)`可用于等待覆盖在元素上的遮罩层消失。 -- 可以用 xpath 直接获取元素属性或文本节点内容,如`ele1.ele('xpath://div/@class')`或`ele1.ele('xpath://div/text()[2]')`。原生不支持这种用法。 -- 在`MixPage`对象设置`timeout`后,该页面下所有元素的查找都会遵循该设置,该值默认为 10。也可以每次查找元素时单独设置,单独设置不影响页面对象的`timeout`属性。 -- 若设置了`local_port`或`debugger_address`,创建 driver 时程序会自动检测该端口,如为空,则自动在该端口启动一个浏览器进程并接入。程序完毕该浏览器不自动关闭,以便后续使用。 \ No newline at end of file diff --git a/docs/WebPage使用方法/3.10动作链.md b/docs/WebPage使用方法/3.10动作链.md index 8d801c2..c85c5bc 100644 --- a/docs/WebPage使用方法/3.10动作链.md +++ b/docs/WebPage使用方法/3.10动作链.md @@ -99,30 +99,118 @@ ac.up(50) # 鼠标向上移动 50 像素 **返回:**`ActionChains`对象自己 -# ✔ 点击鼠标 +# ✔ 鼠标按键 ## 📍 `click()` +此方法用于单击鼠标左键,单击前可先移动到元素上。 + +**参数:** + +- `on_ele`:`ChromiumElement`元素 + +**返回:**`ActionChains`对象自己 + ## 📍 `r_click()` +此方法用于单击鼠标右键,单击前可先移动到元素上。 + +**参数:** + +- `on_ele`:`ChromiumElement`元素 + +**返回:**`ActionChains`对象自己 + ## 📍 `hold()` +此方法用于按住鼠标左键不放,按住前可先移动到元素上。 + +**参数:** + +- `on_ele`:`ChromiumElement`元素 + +**返回:**`ActionChains`对象自己 + ## 📍 `release()` +此方法用于释放鼠标左键,释放前可先移动到元素上。 + +**参数:** + +- `on_ele`:`ChromiumElement`元素 + +**返回:**`ActionChains`对象自己 + # ✔ 滚动滚轮 ## 📍 `scroll()` +此方法用于滚动鼠标滚轮,滚动前可先移动到元素上。 + +**参数:** + +- `delta_x`:滚轮变化值 x +- `delta_y`:滚轮变化值 y +- `on_ele`:`ChromiumElement`元素 + +**返回:**`ActionChains`对象自己 + # ✔ 键盘按键 ## 📍 `key_down()` +此方法用于按下键盘按键。 + +**参数:** + +- `key`:按键键值,特殊字符见 Keys + +**返回:**`ActionChains`对象自己 + +```python +from DrissionPage.keys import Keys + +ac.key_down(Keys.CTRL) # 按下 ctrl 键 +``` + ## 📍 `key_up()` +此方法用于提起键盘按键。 + +**参数:** + +- `key`:按键键值,特殊字符见 Keys + +**返回:**`ActionChains`对象自己 + # ✔ 等待 ## 📍 `wait()` +此方法用于在动作链中插入停顿。 + +**参数:** + +- `second`:秒数 + +**返回:**`ActionChains`对象自己 + +```python +ac.wait(3) # 停顿 3 秒 +``` + # ✔ 链式操作 +以上操作皆能实现链式操作。且最后无需`perform()`。 + +```python +from DrissionPage import ChromiumPage, ActionChains + +page = ChromiumPage() +ac = ActionCHains(page) + +# 链式操作 +ac.move_to('tag:h1').right(30).click().key_down('a').key_up('a') +``` + diff --git a/docs/WebPage使用方法/3.3查找元素.md b/docs/WebPage使用方法/3.3查找元素.md index 962ed61..2b1a44d 100644 --- a/docs/WebPage使用方法/3.3查找元素.md +++ b/docs/WebPage使用方法/3.3查找元素.md @@ -105,13 +105,13 @@ d 模式下返回`ChromiumElement`对象,s 模式下返回`SessionElement`对 在元素下查找子元素时,还可以用 xpath 获取元素属性,直接返回属性文本。 页面对象和元素对象的`ele()`方法参数名称稍有不同,但用法一样。 -参数: +**参数:** -- loc_or_str(元素对象):元素的定位信息,可以是 loc 元组,或查询字符串 -- loc_or_ele(页面对象):元素的定位信息,可以是元素对象,loc 元组,或查询字符串 -- timeout:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 +- `loc_or_str`(元素对象):元素的定位信息,可以是 loc 元组,或查询字符串 +- `loc_or_ele`(页面对象):元素的定位信息,可以是元素对象,loc 元组,或查询字符串 +- `timeout`:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 -返回:s 模式下返回`SessionElement`,d 模式下返回`ChromiumElement`;或用 xpath 获取到的属性值 +**返回:** s 模式下返回`SessionElement`,d 模式下返回`ChromiumElement`;或用 xpath 获取到的属性值 ```python from DrissionPage import WebPage @@ -134,12 +134,12 @@ ele_class = ele1.ele('xpath://div/@class') 此方法与`ele()`相似,但返回的是匹配到的所有元素组成的列表,用 xpath 获取元素属性时,返回属性文本组成的列表。 -参数: +**参数:** -- loc_or_str:元素的定位信息,可以是 loc 元组,或查询字符串 -- timeout:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 +- `loc_or_str`:元素的定位信息,可以是 loc 元组,或查询字符串 +- `timeout`:查找元素超时时间,默认与元素所在页面等待时间一致,s 模式下无效 -返回:s 模式下返回`SessionElement`组成的列表,d 模式下返回`ChromiumElement`组成的列表;或用 xpath 获取到的属性值组成的列表 +**返回:** s 模式下返回`SessionElement`组成的列表,d 模式下返回`ChromiumElement`组成的列表;或用 xpath 获取到的属性值组成的列表 ```python # 获取 ele 元素内的所有 p 元素 @@ -167,12 +167,12 @@ s 模式下,所有元素本身就是静态元素,d 模式下,用`s_ele()` s 模式下这个方法和`ele()`是一样的。 -参数: +**参数:** -- loc_or_str(元素对象):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前元素的`SessionElemnet`版本 -- loc_or_ele(页面对象):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前页面的 `SessionElemnet`版本 +- `loc_or_str`(元素对象):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前元素的`SessionElemnet`版本 +- `loc_or_ele`(页面对象):元素的定位信息,可以是 loc 元组,或查询字符串。为`None`时直接返回当前页面的 `SessionElemnet`版本 -返回:`SessionElement`,或用 xpath 获取到的属性值 +**返回:**`SessionElement`,或用 xpath 获取到的属性值 !>**注意:**
页面对象和元素对象的`s_ele()`方法不能搜索到在 frame 里的元素,页面对象的静态版本也不能搜索 frame 里的元素。要使用 frame 里元素的静态版本,可先获取该元素,再转换。而使用`ChromiumFrame`对象,则可以直接用`s_ele()`查找元素,这在后面章节再讲述。 @@ -205,11 +205,11 @@ ele4 = s_ele.ele('search text') 此方法与`s_ele()`相似,但返回的是匹配到的所有元素组成的列表,或属性值组成的列表。 -参数: +**参数:** -- loc_or_str:元素的定位信息,可以是 loc 元组,或查询字符串(必填) +- `loc_or_str`:元素的定位信息,可以是 loc 元组,或查询字符串(必填) -返回:`SessionElement`组成的列表,或用 xpath 获取到的属性值组成的列表 +**返回:**`SessionElement`组成的列表,或用 xpath 获取到的属性值组成的列表 ```python from DrissionPage import WebPage @@ -248,17 +248,17 @@ ele1.click() **匹配模式** 指字符串是否完全匹配,有以下两种: -## 📍 精确匹配符`=` +## 📍 精确匹配符 `=` 表示精确匹配,匹配完全符合的文本或属性。 -## 📍 模糊匹配符`:` +## 📍 模糊匹配符 `:` 表示模糊匹配,匹配含有某个字符串的文本或属性。 **关键字** 是出现在定位语句最左边,用于指明该语句以哪种方式去查找元素,有以下这些: -## 📍 id 匹配符`#` +## 📍 id 匹配符 `#` 表示`id`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。 @@ -270,7 +270,7 @@ ele1 = page.ele('#ele_id') ele2 = ele1.ele('#:ele_id') ``` -## 📍 class 匹配符`.` +## 📍 class 匹配符 `.` 表示`class`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。 @@ -310,7 +310,7 @@ ele2 = ele1.ele('@email=abc@def.com') ele2 = ele1.ele('css:div[abc\@def="v"]') ``` -## 📍 多属性匹配符`@@` +## 📍 多属性匹配符 `@@` 表示某个属性,多属性匹配时使用,个数不限。还能匹配要忽略的元素,匹配文本时也和`@`不一样。 `@@`后跟 - 时,表示 not。如: @@ -338,7 +338,7 @@ ele2 = ele1.ele('@@-class') ele2 = ele1.ele('@@-name:ele_name') ``` -## 📍 文本匹配符`text` +## 📍 文本匹配符 `text` 要匹配的文本,查询字符串如开头没有任何关键字,也表示根据传入的文本作模糊查找。 如果元素内有多个直接的文本节点,精确查找时可匹配所有文本节点拼成的字符串,模糊查找时可匹配每个文本节点。 @@ -360,12 +360,9 @@ ele2 = ele1.ele('some text') ele2 = page.ele('text:text:') ``` -## 📍 文本匹配符`text()` +## 📍 文本匹配符 `text()` 作为查找属性时使用的文本关键字,必须与`@`或`@@`配合使用。 -与`@`配合和与`@@`配合使用时,`text()`的意义是有差别的。 - -`@text()`表示在元素的直接子文本节点中匹配,且多个节点不能合并匹配。 `@@text()`表示在元素内部所有文本中匹配,且会把元素内部所有文本拼成一个总字符串再进行匹配,因此可以模糊匹配元素里面任意文本。 ```python # 查找文本为 some text 的元素 @@ -388,7 +385,11 @@ ele = page.ele('text:some text') ele = page.ele('@@text():some text') ``` -## 📍 类型匹配符`tag` +须要注意的是,`'text=xxxx'`与`'@text()=xxxx'`使用上是有细微差别的。 + +`text=`表示在元素的直接子文本节点中匹配,`@text()=`会忽略一些文本标签,在整个元素的内容里匹配。 + +## 📍 类型匹配符 `tag` 表示元素的标签,只在语句最前面且单独使用时生效,可与`@`或`@@`配合使用。`tag:`与`tag=`效果一致。 @@ -412,10 +413,9 @@ ele2 = ele1.ele('tag:div@text():text') ele2 = ele1.ele('tag:div@@text():text') ``` -?> **Tips:**
-注意, `tag:div@text():text` 和 `tag:div@@text():text` 是有区别的,前者只在`div`的直接文本节点搜索,后者搜索`div`的整个内部。 +?> **Tips:**
注意, `tag:div@text():text` 和 `tag:div@@text():text` 是有区别的,前者只在`div`的直接文本节点搜索,后者搜索`div`的整个内部。 -## 📍 css selector 匹配符`css` +## 📍 css selector 匹配符 `css` 表示用 css selector 方式查找元素。`css:`与`css=`效果一致。 @@ -427,7 +427,7 @@ ele2 = ele1.ele('css:.div') ele2 = ele1.ele('css:>div') ``` -## 📍 xpath 匹配符`xpath` +## 📍 xpath 匹配符 `xpath` 表示用 xpath 方式查找元素。`xpath:`与`xpath=`效果一致。 该方法支持完整的 xpath 语法,能使用 xpath 直接获取元素属性,selenium 不支持这种用法。 @@ -498,13 +498,13 @@ ele2 = ele1.ele('some text', timeout=1) - `loc_or_ele`:要等待的元素,可以是元素或定位符 - `timeout`:等待超时时间,默认使用页面超时时间 -方法: +**方法:** -| 方法 | 参数 | 功能 | -| --------- | --- | ------------ | -| display() | 无 | 等待元素从 DOM 显示 | -| hidden() | 无 | 等待元素从 DOM 隐藏 | -| delete() | 无 | 等待元素从 DOM 删除 | +| 方法 | 参数 | 功能 | +| ----------- | --- | ------------ | +| `display()` | 无 | 等待元素从 DOM 显示 | +| `hidden()` | 无 | 等待元素从 DOM 隐藏 | +| `delete()` | 无 | 等待元素从 DOM 删除 | **返回:** 这些方法返回布尔值,代表是否等待成功。 @@ -529,11 +529,11 @@ ele1.wait_ele(ele2).hidden() `parent()`方法获取当前元素某一级父元素,可指定筛选条件或层数。 -参数: +**参数:** -- level_or_loc:第几级父元素,或定位符 +- `level_or_loc`:第几级父元素,或定位符 -返回: +**返回:** 某层父级元素 ```python # 获取 ele1 的第二层父元素 @@ -547,13 +547,13 @@ ele2 = ele1.parent('#id1') `next()`方法返回当前元素后面的某一个同级元素,可指定筛选条件和第几个。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- index:查询结果中的第几个 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `timeout`:查找元素的超时时间 -返回:本元素后面某个兄弟元素或节点文本 +**返回:** 本元素后面某个兄弟元素或节点文本 ```python # 获取 ele1 后面第一个兄弟元素 @@ -573,12 +573,12 @@ txt = ele1.next('xpath:text()', 1) `nexts()`方法返回当前元素后面全部符合条件的同级元素或节点组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面符合条件的兄弟元素或节点文本组成的列表 +**返回:** 本元素前面符合条件的兄弟元素或节点文本组成的列表 ```python # 获取 ele1 后面所有兄弟元素 @@ -595,13 +595,13 @@ txts = ele1.nexts('xpath:text()') `prev()`方法返回当前元素前面的某一个同级元素,可指定筛选条件和第几个。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- index:查询结果中的第几个 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `timeout`:查找元素的超时时间 -返回:本元素前面某个兄弟元素或节点文本 +**返回:** 本元素前面某个兄弟元素或节点文本 ```python # 获取 ele1 前面第一个兄弟元素 @@ -621,12 +621,12 @@ txt = ele1.prev(1, 'xpath:text()') `prevs()`方法返回当前元素前面全部符合条件的同级元素或节点组成的列表,可用查询语法筛选。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面符合条件的兄弟元素或节点文本组成的列表 +**返回:** 本元素前面符合条件的兄弟元素或节点文本组成的列表 ```python # 获取 ele1 前面所有兄弟元素 @@ -640,13 +640,13 @@ divs = ele1.prevs('tag:div') `after()`方法返回当前元素后面的某一个元素,可指定筛选条件和第几个。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- index:查询结果中的第几个 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `timeout`:查找元素的超时时间 -返回:本元素后面某个元素或节点 +**返回:** 本元素后面某个元素或节点 ```python # 获取 ele1 后面第 3 个元素 @@ -663,12 +663,12 @@ txt = ele1.after('xpath:text()', 1) `afters()`方法返回当前元素后面符合条件的全部元素或节点组成的列表,可用查询语法筛选。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素后面符合条件的元素或节点组成的列表 +**返回:** 本元素后面符合条件的元素或节点组成的列表 ```python # 获取 ele1 后所有元素 @@ -682,13 +682,13 @@ divs = ele1.afters('tag:div') `before()`方法返回当前元素前面的某一个元素,可指定筛选条件和第几个。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- index:查询结果中的第几个 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `index`:查询结果中的第几个 +- `timeout`:查找元素的超时时间 -返回:本元素前面某个元素或节点 +**返回:** 本元素前面某个元素或节点 ```python # 获取 ele1 前面第 3 个元素 @@ -705,12 +705,12 @@ txt = ele1.before('xpath:text()', 1) `befores()`方法返回当前元素前面全部符合条件的元素或节点组成的列表,可用查询语法筛选。这个方法查找范围不局限在兄弟元素间,而是整个 DOM 文档。 -参数: +**参数:** -- filter_loc:用于筛选元素的查询语法 -- timeout:查找元素的超时时间 +- `filter_loc`:用于筛选元素的查询语法 +- `timeout`:查找元素的超时时间 -返回:本元素前面符合条件的元素或节点组成的列表 +**返回:** 本元素前面符合条件的元素或节点组成的列表 ```python # 获取 ele1 前面所有元素 @@ -814,14 +814,14 @@ ele2 = ele1('x://div[@class="ele_class"]') 简化写法对应列表 -| 原写法 | 简化写法 | -|:-----------:|:----:| -| text | tx | -| text() | tx() | -| tag | t | -| xpath | x | -| css | c | -| shadow_root | sr | +| 原写法 | 简化写法 | +|:-------------:|:------:| +| `text` | `tx` | +| `text()` | `tx()` | +| `tag` | `t` | +| `xpath` | `x` | +| `css` | `c` | +| `shadow_root` | `sr` | # ✔️ Tips diff --git a/docs/_navbar.md b/docs/_navbar.md index b15f502..24717e7 100644 --- a/docs/_navbar.md +++ b/docs/_navbar.md @@ -1,5 +1,2 @@ * [DataRecorder](https://gitee.com/g1879/DataRecorder) -* [ListPage](https://gitee.com/g1879/ListPage) -* [DownloadKit](https://gitee.com/g1879/DownloadKit) * [FlowViewer](http://g1879.gitee.io/flowviewer) -* [Demos](https://gitee.com/g1879/DrissionPage-demos) diff --git a/docs/_sidebar.md b/docs/_sidebar.md index aafb44e..b0b9a10 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -10,6 +10,7 @@ * [🌿 模式切换](入门指南\特性演示\模式切换.md) * [🌿 获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md) * [🌿 下载文件](入门指南\特性演示\下载文件.md) + * [💖 2.4 贴心设计](入门指南\贴心设计.md) * [🛠 3 WebPage 使用方法](#) @@ -33,29 +34,35 @@ * [🔨 4.5 元素操作](MixPage使用方法\元素操作.md) * [🔨 4.6 获取网页信息](MixPage使用方法\获取网页信息.md) * [🔨 4.7 页面操作](MixPage使用方法\页面操作.md) - * [🔨 4.8 启动配置](#) - * [🔧 概述](MixPage使用方法\启动配置\概述.md) - * [🔧 Chrome 启动配置](MixPage使用方法\启动配置\Chrome启动配置.md) - * [🔧 Session 启动配置](MixPage使用方法\启动配置\Session启动配置.md) - * [🔧 使用配置文件](MixPage使用方法\启动配置\使用配置文件.md) - * [🔨 4.9 下载文件](MixPage使用方法\下载文件.md) - * [🔨 4.10 监听浏览器网络数据](MixPage使用方法\监听浏览器网络数据.md) - * [🔨 4.11 cookies 的使用](MixPage使用方法\cookies的使用.md) - * [🔨 4.12 Drission 对象](MixPage使用方法\Drission对象.md) - * [🔨 4.13 对接 selenium 及 requests 代码](MixPage使用方法\对接selenium及requests代码.md) - * [🔨 4.14 使用其它系统或浏览器](MixPage使用方法\使用其它系统或浏览器.md) - * [🔨 4.15 DriverPage 和 SessionPage](MixPage使用方法\DriverPage和SessionPage.md) - * [🔨 4.16 打包程序](MixPage使用方法\打包程序.md) + * [🔨 4.8 下载文件](MixPage使用方法\下载文件.md) + * [🔨 4.9 监听浏览器网络数据](MixPage使用方法\监听浏览器网络数据.md) + * [🔨 4.10 cookies 的使用](MixPage使用方法\cookies的使用.md) + * [🔨 4.11 Drission 对象](MixPage使用方法\Drission对象.md) + * [🔨 4.12 对接 selenium 及 requests 代码](MixPage使用方法\对接selenium及requests代码.md) + * [🔨 4.13 使用其它系统或浏览器](MixPage使用方法\使用其它系统或浏览器.md) + * [🔨 4.14 DriverPage 和 SessionPage](MixPage使用方法\DriverPage和SessionPage.md) + * [🔨 4.15 打包程序](MixPage使用方法\打包程序.md) -* [💖 5 实用示例](#) +* [🛠 5 启动配置](#) - * [🧡 自动登录码云](实用示例\自动登录码云.md) - * [🧡 获取各国疫情排名](实用示例\获取各国疫情排名.md) - * [🧡 下载星巴克产品图片](实用示例\下载星巴克产品图片.md) - * [🧡 同时操作多个浏览器](实用示例\同时操作多个浏览器.md) + * [🔨 5.1 概述](启动配置\概述.md) + * [🔨 5.2 浏览器启动配置](启动配置\浏览器启动配置.md) + * [🔨 5.3 Session 启动配置](启动配置\Session启动配置.md) + * [🔨 5.4 使用配置文件](启动配置\使用配置文件.md) -* [⚡️ 6 Tips大集合](Tips大集合.md) +* [🧰 6 进阶使用](#) + + * [⚙️ 6.1 打包程序](进阶使用\打包程序.md) + * [⚙️ 6.2 监听浏览器网络](进阶使用\监听浏览器网络.md) + * [⚙️ 6.3 下载文件](进阶使用\下载文件.md) -* [🎯️ 7 版本历史](版本历史.md) +* [⚡️ 7 实用示例](#) + + * [🌠 自动登录码云](实用示例\自动登录码云.md) + * [🌠 获取各国疫情排名](实用示例\获取各国疫情排名.md) + * [🌠 下载星巴克产品图片](实用示例\下载星巴克产品图片.md) + * [🌠 同时操作多个浏览器](实用示例\同时操作多个浏览器.md) + +* [🔖 9 版本历史](版本历史.md) * [💐 鸣谢](鸣谢.md) diff --git a/docs/imgs/code.jpg b/docs/imgs/code.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f86aca7722a66c324a439dc2fdd247dbe9ea2258 GIT binary patch literal 180441 zcmeFa2|SeF`!{~uv!!e$S+b;*eJ3UfNyr{Tj3Hr$VXTd5SE;13Cly&k$Trec3Wa3f z$!@HP8O)fO|2=$KKHu;6_x*qW&;Rwjp6B;G-ClFw*SXGh&biKYu5;$x_x+v=t(!J1 z!ekig?Fj&8W`HaJ09yby23~*(q!_?IfMFNFvOxoYJA?2~`W(Z)zhoFe86^Nb0}|i| z$)LPJ^Mmw*C~tuIud>cb z2ByDcS%2>fgT$}CFv$Mi7ei5+y>K-!0~l!Y zz}Afv;BkR2N9zNw09;$PY+>KR#m>&Pos)xey8sUt7mvVBK0X0HzMb2-Hjck8n~8rs zGjMZqa&P6{wsq?^{;gZL^3zXS`8SJf|4%BQy#cmw0ZsvFObikL<8}t7?F_U5u#+6L z_Y4qFOBRNW15}uPFaZpV%q*;ITi7``K?nGICIi68^doZ{z`)GF#K_FZ!p6FVg^5cA z%-qhzyoXnbMc>kmPa@!=GAn=VlcFP%QUX?Q-BnbPms$+ir0-dO8(xG4stG`B~|Qj&XvWXYjT7%(B|f38IFv zy;n$7LRNWQ*W}7}fRPc@mU%-bHdYq34Hfn%@iK!N1W53)C|``_r)%)ms^y!Cl>0F9 z(mexf0cfD=qBJXA0k*wr?^;16(sy_m+NuY^Mt-XBUuz)qO9fglz{RxD=5_!AJicd& zm?pBBH>B_BiBs?DT=kp@KD?|9k2&E-T*$&Km11Vg@!{(|&}gBL;>Tj<7gk?U4|yWD z^Rv&7NMYN)kTm+jZ@XL$w(^FVu{Lmf){-7&_99Qw0OLRrm!V0>i;T|~+eA8)i|(j! zo>HP{N9C2dD5pUWL?8ycs=H?k8X!r9UQ5RdNv7OcnR<8^ix(Rl3Kjug6WYxkugAV==r*BV&miR#;0LYhMvD3s-VUS|)LO|ZkELU;eb zk>sH}UC~PD07DgZ?WzJlLYs@ai=jnjcLzp;n1@TD0j4CW#pcmsO_|5M5>Y#H4`CE| z^=5Q=_)%(4XaLKkl@rk|$Y^rR5(>_@qSeF5>&rBc{6gLn(MxZXu6V=Bt57$Ze zJ1)1Tro`Nw4YnfZ0O4KXw+YwGy6?1g;nU9b_u}3TBdldvQw|z)Kxz4)I=BYAq_CBa+sq)@Q@a} z5^~J-^;}D(``Z&)pYhp!*q2!UeqKjCX1`QKet%?Io9{a)MUI%Paq8>jb{)CE-F1-J zd4dK;iw5klrvx?^y|3q(trAsHJ}hn@!Y*ANb)zlq_OY_uYI`fPZ&C9Xbu?tTiK2$c zTM4!!S1T;vc<~JjEz)&L=5#Q1MqP1`L&a-7n`{ZGEcK1lb;au{tR7wP#b>uW4mZ?y z7PSY!M>5K=k%BB0%i7a3@+EFMw=|=bebbkUb3(A!O4=wpC{^y2typ7I9BWk1O$4^- z^w$-%q~C)%f6z}XruyQFabGYslDm&~rd#?vX)w1n(#u{%(ST}dNn-|9FRnG*dAX?5 z%B2olONy^-3JuJU)V0~xWlb`&wJ#-O9ufGpz0B}E{4niVV>W0H%r17i!mhKTyDucX zk)UpGy-0+HC+X0D(Yre{d@QHi_aRFTY1ehK3op}0yVXeqBAnrBCpq_=l;mJ88o#1( z)@N}BE=U$a6buUyP#&>8Ljv1TRPbL zg2L2K0m!9#Nuk7VB(LXa>syfdhw_e0dr!T&Cr`LTGQLr-D>D;T(t*-~7dwVv-%Ofn zgu6^SVv-35LG1&>qqSu^bDJ_>`Nr?QtP%f8wc8wzD)7T)kPtLLmtp8MsT&&5?0_St zU_<7_-$q3fF;iK&;i82(#I%XNsrhBQ4>Z6LJFe?EsRH4YWMWhAcT!BTZTeXGS?=ayb$ z(PuDbRSJBd1YlIu%K58_6nl8->FR{N(ALX$JuZ>Tw8g#EB<`i z1n6(k3gmH2`Y;uV@zDWImv_|Z_Wd(Gc!NO^k`~W0x-+c>0jFG#TW&6})j`>g7xf9B zE~~vu~IwFW+llT`rAva-NUCr1WcDJI83=n&TTcP-oH|Mx4WsS_pn}Omqt5DFTI=wIGa=p&m1sdQu^*Ft8&Wk0_**?#y&); zaSjDG-Cb>zjF<_tiEM59R9BNF#=~1{*NdFRcc}Lji#QjMxPmD+2PlCv7w{E{)tZ#5 z+!U2ubb+5*84WP%f3?e0XdbRx@%pyIXF^KM4a_qlqSPrC@i-sd38|JbrHI6=Ows@i zD&hIyZ9-fjLHPFFK2_nGH$gn<^MdolY-$bZ!%Ic?F;-Qr{Ij7Kx@drQZFvW=Z0H*f z&xg{(5f-+MRF>P4jn%7i>+x)}Zxa!IhoR#=k0u4xI;#l1_=b|U@(!}>&@{%O7|j*+ zl}&@V_b4Hu!p`%ikc+ulP^arODd~B6+dE8VZTN$M>Asld7V=9>I5^FXp_DZm&;%}G z0c<9uFRiBDpS-0i;`?|_22TeMESINFLyBG(r&$orr+v9MjXS1$C!l|&gXG#$Jx{W5 z#}N=S>UMCr@zI9qYmMt%eP&^zx6M4^x&}Ur`_a%APeY61JcVVPMadL`0?E34gOE@# z1{)44N3Ca~4$kiNR9EzG;vTvaNKtX~$Mx3EQeg^J#w!_x%R!LO7IR{6<;@kG-pGCY z=(qZzIk+$SD=CK0ZEHcDPJ8JsiX;tqC##epe?NbGD3xIRWMXXF%y$RF&I*75oj6}y zQ;IY0AO9@da%Tj4TCZYC;rI~eus2ZG8+W>T z+LcNQ@igGbEaGM66xVd6?*7CIt&nA`wtl(5t=hVxo=c-pq%+1E-|Uq!)PC+0y0oob zjsRcA*A?{REI8)f`h3Spx;nC-Z?_jfwdFaToGps$if+}_*EJTl^*P)1k)5k`h>vQO zaV1{eB;6A?m9sz8Hsqul*>({Q+IN|X1v^K+5%J23f~9KD1RnU%Gvhg2R*(`y?0=n3 z)?uuEbWP95FoA>`#3yP}Oa*5P?x~0++z^rLm}vcU+xCkHT#yF1bhcn@J~YDATWNsx z5GFk;A*QXU_;t^*@HC_8ib_qfl12IHqi#LXPRet6k!lX=mWJikiS{rLPmgd1Ay?l| znYiN7mXxdT=8m-L{V_-IJq}u_kZq@^Pqo7$hHQgMU#e_fY+tPF*1rC76gTIT2P?Jr z!sG1nI%t42j0E^SBU*nUT@~sMI%Oc6mrd9)IzqC+wH2p4udmCg6cX^OSuP@Z^~n|` zL7F44I^ikuSaZL^2D!KRwfJG^P$D_R8v4!Q77d69$Xi~VE}DDt2$xPaCRj|ZSerSU z>l)-(fg8!s{`_N|0g8b|`R}m{wuvzx`)>Os*|yl{q*d`{cU(;HGXIn%Mo4oUvU>1f z7IRAhU*WoFhv~4ZG#?#-$WGIM+8xXN3afdL>Acff0gGaBLH$wWD6thU8ek3=)1u#t%u(2x=u@JX{r2;yB|VmRQmYyQ>j^E)v~7hTNNJvE!Bqgqfs zJWt}syt+(Fy1O)F6b|sU)x5*a@nr2-wjFVfNwvM%oYfIfPpZPJ&leHLbtGUrOs^j5_3*<$W;$kd1$vzp2a&nyEj_`p?qh0zAHs%TT zox}D)9G43-7wmG2Cgl%Xqjhc?1`VBwJ0lnLlj_lenOk3#FEV_ z!W`6EYdy#MZroXT=`mo|NfOI(!uKTSpBWyh+UM4idauvlg_`7|UxzPzsUegA)l{x+ z^Nhe4+Qzk9rvcxux#;4&Kje~R8(pFqIb`oF{EhCwI3OR)? zJ2Q^j9p(Bu#*q5Vwj*}ho`h-f93FRHF3bxi6r|nloAp)=>eRX-e43{ln`YBkL`M2# zsgrX*dYW}vdYNIKTqa_tKb7p*BaNpPLEEAU(Daef1Z=YIu4z>M!52jjbZ@D*6FW(> zy+ddObcZ5VzPLe%0C}R^$I@AvI7}=ZsjaRN>3i~x} zGBV)i+^zmotq6};*6ZAY`ntSa_m1|dsh75fjkyi*JU;F&kFj#m&rizr`h9PmHy$#x zrQ9QZrvdtiXP(jiV)xqu0%t0FRtI#uAbiU4BPS8{0npvEqRHnF=2>4*c7DxGk#>fz z<6`X;ix(3oLvLFRZvXJUr7DL2ohivWG%^YQ7-CWDr!nAPP&YE>H5%@a7@Al%HtG}w zH|~R+_2{ymC3CA$6L?8S=c7HLi~jP>*qGj!><)Wd&)G}5Jwtx^sk)tAMy}uvw791o z=|H@RM1DJ%wI1i%%bjX(-7K`GF@7iRzH@gO%sJAm)cL}9UBMCTz7kFdkHWIUE%J_T z-4ii*vGjDYwlC8wZC)1Bd>1~ax4)?7N(sLj>;OI3SQnvmHQ@T}iRAn|PDwGfiq*87 z7PzMw=CeKY`;m#d)pyjCt298si(>2Z;J?`N+MCs5DgtOgFlKpTcqwf@i2|7_Yd-Lp z6iWjR_R)Z=X*9t8_+;||%(U@(34$t!p*SD7{&vY=>W=-|I%d%Dy3zo+DNM1`3zl9U z>#?&%@svWO#++uXllMYEZkfj)){Wog*Z{R&_d$G$aYlE-_`+F;mpS;`wK`Vg~J}R<$%S4%nqBR1o3B^Xc8-CNdkw+bdg%J4@bS z^3hXrh}dX)kT6%>O#||5ovZb7XP5PQJfpEQqfY2*-Bji2KzKoeuh!nC&#xPAI(9*| z9>p0DAjcmnm@bPZ^epLGSQ8L-?}GXt7Q~0RwNKARFfE+f3Z3_d=+A!cGj+wJm+&?s zCJta1tZ)wOmAX)!>3LR&#YeQpL>rvP;_2*VzcQzpp{wl+jaaNVVG6&>RVX7kotMA5 zKm*vqSv4G{MGW%CyuPeAmN}D#jHVV|S&7Bm5+X*!a|oUh%1EJ-EE48f{W5Z;$70o9 z=+Un0J4T;lKDfp27Ybmv#JlCUkv?cFlcOx&kzFi0BZQ4$VKxKiijAS@c$?1|eJS?c ziz(B^chao&dPo*{AA=o*TB}K6sFAPB^GPi}^>1JFIVTCp)uB7uqN8G4h3?;gA1LsH zWR*zFpq=*9049>5b=Fvw7@tnAvnRKZ5ck`U_@K#db9HWc&j_rKk{>Ksdp1{y7}KHG za2t=&nmKhj66WkRJ(PYKy%nEG;JP*YJX1$lMohg*cI&jDll4;d`T0Ve!fYwHVaDjr zE)RBkWzEdjg>;zToORCHeUn>f*QtRh5$dB)&(WPW18HApv0Wt;$u3na=6Oh0EWss9r5Y*b}Iecv2`NCUv{{wK)U!+>1@S{?2+_*=W0R>~Qw`0MoVlApbR! zEt3~xw=+dsKVFmi>M_}awsH69@FTXhL=G95C3f@FJ-=m9UcT#j$Z|sXsg$0n2<6UB zC!vteJzuc4Yl#AuaWNRnTBx(r9i7wtMqASoZleXMjYVs!)Qj^Jqr$c`q=R*2>4dl7 zBd2t}S;+&6ZnMj;n~0B|;ll$;T9?tT7Oj1A%f!536eQbjDDFP=aOOcBJ)Ml4Y@`8+4d6U(Ue%@np*2*b*r?&?LLHh=Mt#xN zF*_wqRM~m+Y`W;>h7yu4zhz*ttlz;#N(ynoLPJ<|p_3SSr>o&ZZgRjPn^{@^)~tk> zc9u2$2jLb^`_KE%W(8q2f@r`C52%-=E#}D($tkjr7;~i1^l5$8x&y4Nb3&~L{z|E^ zN@~K{Um&&7Ps>3x(_9A=@uduBy)JP;j4J0t(ADla^>SVg=D_V^;&ZNib{4v;(e-6} zZCi3b!g#Ko8m-cmuYe7NOell<$3Q9vxmIlHE)Ccvzr*Fj$E=)@HWyY4D+z`4tovS% zS-i4GJ(Cr&R|hP3qm^bpO%cB|8%-0#gDuT7Ukpl@KJp~k2#@>l147 zf~Yz7qdmD_=bg)+3zG{JzxQrv(y@8qG!59;fFF7&z4iF^hbKHFb#6s*z4l&4YCV;H zguKDbtF|j9t}M)%tvzPVb7=h_4Ip9d_3UsR@FzFgNGS`AC9OH_S{J`eMnq5h``YbZ zcv>ef%+7dH#w`B(d#*217a00WweO%-2MmPbBikE8Y^Q}vh4(ktXJUn2P!(#**nK`T z%RTm4v;EIH_f=4A>QQT|H)XX>g=wvwAba}7QE)PB94XaC;T^*x-P6d|UAA3gwkSxR z8z!Sqo|G`{1VbArr@7Si6Rq#3T5I%9ItQkhDZow)LBTB+bo;)lX_1|2u>7Xm1zrUc zr)MvS_>=@SMTjI+C&iF$EeJS+`=oQYV}%iSDN~e!X1WnmK_iCF$G}#14%la+9zBU_ z>)%%;SFNx^Yu^V#FoG%7O0ei!C(WoUe*&>oL-h4 z*@y6G$R3eXLb|chhg`a6zW_a3K>&tx-T>;&Ix7Ans}fq*%3BsVlg$1cNKfj?RFy zq{`N-vnYEe`y8iPLVs5{&tQWxZqBrK;TdKXF}dR)mgl(;MQ||oavRn*CGTC}&QHUm zezu(?hlR@5bFXVD(#^R^^(s=rUwp@wif@(h@k;IU;X}~cAKzPgkZ^V>CSB^)xYPrZ zvgv0l6N?`S=Q{9Bz~uhD&0`6%*3&W%5)!0dP3Z7Q={>#oeGKI6SCBW6-bmd0D*>VP z(B`D5zg|PC$SVSxM@-C^r8nM)ZQD5icG}3(-e7crXL>&Ul^_6c`XjyJK^CYWe^d~d zq`x->P6h^9yCV?38xkh)AQ%je@}p5Z$OmpFLk*(hu69ZHut;vGaUL(kr<6NWT* z^MlzKp0WX1n~iN2IEh3cJgs3tD1Qt0b5Jmo(fU_SeXw1Js}>1O|R=v6Svfu~=6yG@Hu<{Bt`?q zy1r=_z{>cD0jLfA4K`rqAujHLK)D}Ae5EHh4r3(zpLj=n|5@$`(!<6U9%LkGqibh@EfK0BD^Hg)*xbveV2>&DF4 zyOFo`uSUTOO^I%L3cLsIBxT6Ck@Y?K1w1oVUBuW13YH)IJL z++%=(rze=>3!Xs$0C+I`#d(sH{F9@+!FL4DKV(3Z0VqlL{J%IGb*_SG0PqI@+P^%Q zrs&!KGK=>ACvU?R^s2$hxY;{qI^2TZ=by)hjN(Re^OgOkMd>}D_kr$pj2kjrHaNS$ zGst5+y!oL+Hn=W;4E75f)?*e0^MMT@#AZEod4LH-3;bmddJ>?6EEwN|1dEsKS+>MP z&|XS(Ha+hjj^B9n5y+^8Xu)6@m2j^8UHv8d}q9x7gr;b#S|(f)K_qI1K3)1oHqHfK8bHkFN-hO<_8R zo@284Me#qo|4b;P@87;?HjMvwj#;4B-@lAl-F$;=+`RrKwG|5U^|gV82AKpNvoSmI zWAWSagZ(#Q_Ol3NxW2Eq*AGkaYo83HV>Gm8){=QW)FrTgZ_oM-4FKP#W~%* z3=qBu zKOR6I@Bk2iI{*X3fs?>lkPZSrfg2PELjYkn|6W2IFaZC=0cAiDd^N8{uXwYiO;iIL z80=xAE!yx_=CeUT{@Mx(@IZMtdRPW|D8f%6)XiT(NnTL_I0OmxcZ2%Cg2dfn;M;6n ziG?bhgt)hdu7tgsnWCA$0qm^zv2Y~JI^5g_8twzt@{oY&i608p4)yc*g9W*Xhx+-# z1GPhSB{nM825CB5K|*{(B*;fsVk2;Z_$jlK;syvLOk7P~T@I?GswS?XC9kBeqN=5J zkRBXDQ$bNvK}khUNnKl2QCnGA{I5d-Yz^t*scm)C=&!cGl&-{IoeBvFkq=RkM396~qSDW%{C~vT_*vv{{rH)^G4k{V{Iv~`FgFmxWCP-tehkzv zxZFQQ?f9(>41_(wbS3CvJmeIW356rtbxg$$#RB3jdY4O_GoAhBi?coOp!Pbm)o&7!hJm~a$kiH&_qJyxRPJr~aU~gCmNVkKu zlrPH98>H#@e||rh8wd<%rlWJEf?&|IAgu_}Tu2)$@b??chrkGmTwcG??!VDNAQ~E! z1q=}WVH@~h@qN(!;@~Z*ruZ>fh%YQCNbV$fo9%}50B?f*{N3PT0I=C-dMSYSpLXsW z?9J1^&HPR7-;wmO-OOLI+!!+k!Ny;_UnPI>5KqD1Zh*hFV7mK@=bi)riR?H1h|29>89^yl&aD)3YCzb1ZbPoCc1&$}M+qnmJYak^JS zL3lU{DIN$u<$#IH{i75A4;TDRt>5%GXa)0xAz|Qsskj~JW#ErbTkbb!NvA#fb90BisUzy*MUkGA{(BoG3e2QC8FfN0<@5Csg##ygCOj87S#GnO&FWo%&VVEoEB!$<(5jB+vwGVNiK zW71?YV6tFxWb$M}GDR}oWQu2c%2dFFWvXLpWBST8%e2PK%FM?s&Me2Q!+ea{mKn+% zz#PeZi#eG&o4JhnJ#!oLF!MKNDhoHuZk7Wq+AJn4r&zpLLRhY`#It0wl(Kwa>0lXW zA+oZv3bM+uYOo$-bznWm8o_#tHI=oH^$lwa>nJOMjg3u+?EsrDn+2O2TM*kdwj{Ra zY&f=7wsE%AEu34#wkU5g+TyqczU9)E_$|3xUTzagO66MQ=t3@>@-|dThmP zP1#zuwRP(}4?B-Ek3NqJPdHCJPYF*m&+In#ZF{#FY;)Tdxh-W|<+iSEgzbFWm9|@K z_uGDJd+zp++oyQhc=z%e@_O)I;Z5hQ;T`2;;*;bv;DhpA=F8ywz&Fm%$}huj!heoG znm?caGygXMUIA4BJAqJv6oG1iuYyd1dj(AdeFb9#iv>FcNjpS#=Nu)+(R#Z^*u;@9_2coY<@nU>pdSc#U55#a{ z)8Yc+`r^LgiQ@0YzwOz*=hz<9o+o=g?;%UbNZ3kTk|>lIkmQiml=PH*Ao))6o0OQ8 znbdiyJgHu3c4fbjEPLROrA{tKJI;xeF6KP?rY!A zx?gj@&;Hc?Ut}3&)nw1grpPuQU_79H!23YzftG_T2el5u4?aEECC4SFFBdGACpRoF zD1So!l6<-Ryn>X1qe84godQ)+P0?2|L$ObZSLwLYB_*uVcV$^+sB(&Oy9&38kqSno zLS<3)fGSM&k!rUZpPHFkl-fHrin@k6QoTSOuOX#zM&qGImnOgFNzGfD^;#@iN3<|n zue8>*)wP4Pi?tVY1TwX1cmHPPmXO^i*S z?LJ$S?K?XjyVG_#b}RNr?eE!tJ*998eX7A>mxH%Mg(I7zonxjW!O74m&T0I#+UaYj zJDp{mL!Cdm>~isSsdnXYb#pB_!*a&{OzxR=Hw(9?ZUlD|_lNG^pa#$c=#0lNL^PcCFm#)`+FZ@}^+4!@w-Ui;u-izmsol85n;$z{H;&;Zc z63z?vfxkzHB0>=@{s;W8`F{=24u}i*hBQTH1~LRX2UY~}gPW;F)IQWz)Nrs~a7yrM zh+RlY==M-}Xk(ac*p0BsaHH^N5zG*AvPE^`;=Ih?qKi^Qfk#vK4 z)8po+XvOIG==EFBTc2(#-A=qsyW@H1bBub-qr0qk;deV@A+g!_w%-fCH+tXfe%S-@ z2R9!q$GOIRj8~0MOW;UAC45ahkyw!=m2@|0J^5^MN6L|u!iT#b-gvl@>XF*|=^#M~53ntVjArp`$Znfn)3AS0=b8;wQx>bEcH1 zUg3@KU#6X=$7lR!$g|hxw$DAB-#7nq;qXG^w^QH77m*rm){Xi5(bHW zMDohbRiV}FHO;j;l09jX9J0=~o=DkG!BS1B{WL%D7qPzrV;=@L1e<}eH^WZH z7A1atWk~^c%OiqrQYt&F0xs@!kCirfQuJ-FDw0F!ZHt=Bu(kT7#d}YW+5{RJX&6KI z+1lCfDt^~G^4;Td(ETg0^pcvk(fyj9ODI__?PDg#!Ofc2S?_bfA)#U6SFc4~zj5OX#J@96C6?&%#HpO~D&PcIXQE30cHu>15- z-poua%*@QJtSo+@%G<$E-YiP2fCQhuC7ZGvf54U_7bRl_te&_Fs<0PHy=^f-e%mp8 zNfnIfy%TzL@oDj1H6a^yLk}5_z{~fIg6R6%!ccY^SFUa-ytIGUgN&E-nBH-lLB01G z+k0yMjO+a?sQ0l`XG5?gAPpxX1ICzKMNXn`F*n?k_)jsZcF8pS4F7{LJH0kfL zxA%A5_4h(Tue3wzxrbAKsoq+0bF|hYnB$+dyyWwpB{o z@;b(6!0eU>A0hA@*_guA8h5l+_R`Cl)Nyg=F(@4M>0RBDpT=mPf|o>FO~nJM58Y<{ zH>^}^AsuUkPYcvs3nFhdZjkc2tU}ofuDbhXX#4d6n_3GJV@wHEpb6Bc>k!!;JcB;>xaOJbAM?_HAYw zH-XnNGTn7_KeaH;c>vd80!C;RquwE=@47r_cn3*;6~$De_`bHPkO*FYUCYC<&TTuE$Ms#)K*7Q2{! zccOBSqm9@7mM8m6eD($8hN+_SsPOwcn=J4g_7oR%2&f<3zc3`7-k4`%3u|;EYuMSs z__uB7P+|&w@{D^`&yEJ%K;RdKj^$qt5EqkxG~$ErKLY$sExqf-~Uo z@+{2xW#XH<)4X9O1Petrk`5X{tsL#MIK!XpY(}=HUc|TNJbK$1fg5pvjFp3-(yCj9 zk&P%5#kwT1Wu9ZxxP_uFmU{-03h|~4n9iYLDr9tS^y~pwQTj-zt z@x$iWy%W@xHVP-%iF(imLI4+r$~aM~HRcr3^dE z{@oQ_X)T+hUH&&OMIlgMsv`<0-5eZS|M&9UE^HigJ7K@w<{A!}wgiKL$`xkz-N5TFu!eX2t*8HeCMbs1`mcuSf5Q&s z^BuNmC@9cf$XxeWBh17^&I~G_ClTtZQ42zP=#Yg09r|qfKYzU1{?&K|8Ga}*UcC$j z*Tw=n=F@{T-~u~90}7#YH}vJABt@O~CS7+s5{jy!taQYXdnEg&6;;OD9EVn8=4NWr zX6jbcP{Fc>Y%ZNc?=c7$$!U2^w^*>XEnAjgFaS>0UD2uLbr);%VyQLvbjuZ0`Q5eK zj*s!kSEhHC&L_Rkr3uCHdB0Oae=y#Pu7DbDWU5I_w z&l$Os{0e^d+|z33y)dC>7aQ%XNzJQ*qXQlSc2Azn_^E6&+}|bnwp>HZsXrn^{6dF& zt9| zZsnooEGKY;!dJ2=;Oc{>)(n;4yGlWoUp&x|GLbF_?O0t2A4xVgXHS0ccqTc&a2mQy zN+Db9Q*~4l^Rn?i)z(nZT+a8^F`003VcnQWSSXyN6cvH-PBm60{Uk*~t76`Vk3bJ1 z@;}VIITXbQCLYH4y?SD~`YV3swtwRUJhk0AW8!`S8GjSg!U ztZf^{T7!)s922aiHsd>%B$x;ghN_oSHoo6+;WIVYXA-J|aP;JqYwysaJNQqNatkSq z*(={uC}T8WHTm^2rahfH>*Q)y&ewW*kc&|8xBbB^=Uu&o6+3Btar=B;K>9YDGk)aj zwXw@tDNZEv(_@WiTVmS+>O~*t*nekhF6iLg#&$6BCImF@sfdyy$KbB4c&+^ohYyF^ zEY9>QET0K07i&jj`XXMm8$EsCl4Ei-pOb}`2Ols~EjCJBq;FoHo@JkIZ_-}8GnBRx z18!fgbgb+86rRPkTqKUXI5(P`Bzan8Tjb|gCwcN1nkvQ8rXYpb1o6AP)dac&J9nw6vX9iC~o-Zn}_r7uPDw8g;N^3JXi8Vv)`t_xy|xX3J* zmZcey%JS8|AuRk34|1Ds`1mO3`SkX2sMpn_kjoe%U2x{zBhS=`Ix1wN*i83#HIZMb z0qBaIpTx`QJH0I4U6Io<1r^gdd$FShxWZL52K?_YU45xKodHY&9RbVLILHj9a89f8 zmU^0YTPD}ywKi)uR#B6MU3#z*cK=ZLlT};m{66Z6obfRF0g9|PxyhX#?XP)wm-d`27 zh$M%1ha6 zM{ECA>+N6Pk1r1&GB%D`i#%`9H>9XDua`TxCO2A2%s2YfA8|WmZ&y0!o_e=)N+;V| zjPK@W-51G3;QY?*#AN__uNMz2STB^}XD9de&hLH_0h3Xzo_^PI%r?pLK@l=8``Nw& z?Ip9gvXc?F8|x4QR~BcF3|e&Pe<(Se@r9S0O*Fw({xyg7a!jLc^kQJHPe|Ep9ipO4 zT8?$3Uvp8lWn9Dg(w18@8pOtkUHgDUTXi?oux@qKQ=Ro`7^G)*#hvo$p7b5&q zjw-#d_rF~9$qpyTt+^~WiGyMC^hV|$roVWL3M@ZSBwy~r@lgA z{X=({c~S~aCoOC~b=3G;BQ&5p{NM-H9p_r#fRkBE<6AE(JL7qKjtFlN%=7Nh)s-z| zg_X~fpF;=BSGAUcdWZuzg|#xSHyrC3KY4;-piA$g;LljD0d` z0h#P!f2!-`$qxpKS%7RPDQIrVc7l+x2{E9^nx_c7^R0k=r9V z@6K-BaMO9nK!R^~n6li$z2Sa^$~y)^N>(rDSgyssyH@&rI)hkVOP%dc&3_SYhjW_< zR;K~8jW=rNc4N+*?C{GzFn;P;{P8q7$7|$$@1;~PeN|$bMo*frEEt!k*h?=d=+5=O zN$3-8e^OwUe(*W=He0=CTEeN}GNhQg%aTz~gMFWGd_?Kutb@Iw#bdVmFoHigc`&hJ z=R89^kvtC~?nRxO&Gx_hu{4 zHJ^>JU7Cd)L3`H&s7E8pRVcF%*$|Y`mviB_kiMnUr-?cTR=%ko?D6`ni&nk#$T4hI z!d5gx>VAOxwiOFjj#$nU^#M zR8o93{1%Ws^M1|p27HIY`>NygWlk1sVY;f)5w?C}Du-%z{`$<;yLZC-(OZ|B%tXf; zM&mW|-}>G1P;U1ue%Y{3@#Qy(r?tYZrV*bMBC1uhHeH(ywky3O*8_yJvEt zRm5nEC|du~08;AJ+`M4($MRe6dd(saWZh-Mrg_DMS47THjoZ1g0c7FP9loXs1BuVw zCs!ykz8x}`g)V&hsJpl4{E;)mH;r=Z?JaHAxSqb#3>{m%^tu-lYDY#0%#Y3|DBLK+ z>pLORZyg%;kUhV;8?L(SW-T`Z=)_Hc7d}}{}=;W(-`&}_?ld&5s?xx1z_J=^Lgy zE-Sqa=zgsT@5+}i`ttzuh$5XlQaf76ZF^(l3!Lbyz>cl>WC6A@k49@!{RIF#29~FB+?s>h-FLJCHX!@QI>DL(jrgVSI=lRqSGat_1(Dj-VVNIDZ@$Y_q`DDZ0 zI8KGRT1UlN@ZZ@z*Cj+H>ei3*AS%5)hr+205;cIV#FJFop#q&zO< z(V4*&k?6SK%0l@wA+!29FZWAYPSs#)!p={vub-MLB<|Fw0j|}x_bD^fg^Nn_!Gm>Q z!2Ptwk>OcHmHol(m3yg*Dpsiuxc6yed8U16Ez4>>Bb$&NCxWj;-1moy_gKEYo^i)l zPeceY=}>C48*8%eht5 zC_Q^G4e0)VNc+xzs{iRgn~Y;0`%oz&oa_}x_TG+hjAZZZ zoZ}ps$2#Yj=Qs|!{I2WHb?3Tu{SBYTu_vxEKR91B&yD-EPE(HyhL5zuCsO^kIbaA`CDI zpABytVZU&U>{9UBz3T}|Q!XE>-H*@v2*2Wl*-0bmN*yhiChg706SsxOzugtBX}U+@ zE0*CXT-E%@_=Z2+qb5*iAxEi`D2+B#ik+FCADhkbxTE^S03be@QufisPuV$6@WW(l zDc+X&zKtM}8d%w76U>$EjeEx6m+(?8b>We%6uTlirmH_p$s4!19h~#Mp})~$eJE2% zx#SzzW3Xsp0-6X8Iv8EQWm?j%&iAJi62I6QA0CEO${1kJFGkDWnPb2CMD4+s89_&} ze%2zXOoa+1&I_Uk5t`ZAx31CFh@zQsuWxN_vj;K@QcAk>TSd#7DBb3GN_0i$Rwk3$ z*D~5P*+$`J`r+#QR#ZF!EUIFd^D{os3*aQ93btt8|nqVj2PaYz^h6Wbf zI*1zR<4<8uO~>N)MdPyrpAXbIIQR~fHSRlZGbQ(KPqI%hMvyo+aA>k68N{38$zBy? z64n1GvSIe8%opALxP=&V!!V-Hh9H+mKIRSL7?1aSvY+rqNVlgHa=23;AsKFm)lKIp zr_($6{8SO*C-N9BpIL)?pqnrNTvC(MeCJ*%?we{ckb)DKmi%Bk%#)`WgZ3uZRXiAWqf|Py4|+snJC;K z>za5eeJdSVxG{+2;9r-{)ws3U{Evd?_)z`$jNDgzdC29(u3_ulVn;FV6z}_wLdmd0 z$v-hH+UL-pBZ1!y@u!wj(<#6ukn8Yf&-enT&NTL7l*&8XYCaPtH*+=rX~9`Z?szk7 z2s6c^ZYTxbp{%sY6UH$wUqKJiT&K+}T$?MfMMqzJ;I+him;HXJd>>z{^^gkkuTlU>vd7(Z?o_((lY+mRtM{fTfU^k(E_2IX$fJ0H9f z7@(scXg=EMzIpuhE7uS)gPOTQ@Aqo=2FJ_K8U6nB#{XR{B?vCqp#G1iJ-^0=~;K@nk2CtD(Z%|8rpo(w>KKJ#S3d%9lojc>&{*P5W`-jc{I{qznLhKetkNg zt4rQooo9^Ga17CV`1AO{t(l|v@e6RzoV-}#kk^~gzC8Hl6Jo~MC1L{~4xp68j-`T$GSeI3p%osEa(yOb@-|-?ICBbUcmq|7Y z>B2QOf?t`79DcUa?(Qo0ZRQ!5>UMKSNP5=fo_;>)4p3ZNqB|6XS>fJdwOLJPXQqK1 zdc(rPHi~)aM$vBNPPS|hZ?Nr0Qpk+e@!JP9RKE?WAg^@&E;<@F zYCU8hoO;U0gf9ed^PXLMrgY)j)I?}8HhCre({ z%4@eP8B)XE9A?~S`i@K}Q>>!GSf%AODlrTOQ}uJr?~ z^=$p(Qa{|HBKyJJD5=BUN2}yo|F^qt{uh3T2h#s-+#M~u^+O;c~idjzO7}k>A2>Uexc5eo1KZ@c;FPTrz`YSKVNX-k|yQC6<%z zJt)L9QBGxuE0EU`dx+0!`}phdNux`gpxcN2k{>fX-z1p(l_@`Lb!nfM!xMQ7#c zEe1amjp8uQ%%P@(NeLBZ$SEkkT!+!j_Jndz7KAm~{V!PsZgG0OB)k8eLQMGJB1a~qEg8)a;Df#Y{CMZ-6GVV0`&3be@o*59`MFdMgi8H;nWut}5VPj@Vjl2e?~6~ zHy;cZlKK2VuV1hW>&S?z-kVUBHYkY8ejD$~jek4I3ldt%P^UWDBj%8<|D$k2-C%o) zluUPiky5r(T764!7J}=pM-GgR9b(Tj>a3SMJy@qpEu*=O9_E*CB?Zzc6C(}Q_>aJa zbC!d4tKw3?#KHBTrvU!#O2M?(CD~Nw8^ZiwqCCQ`qxX>Wvs8HP&Q*iweR|+rW%9x! zf2fd!O5~VTx4+xFF|~4rYqpOpzVC1OoEkIm4s`q>7lV{H@o?k-twdj#7!ffrtfG{ zP-XF&R_Ql=Jagl2Y}REZ1nvLkUp*-`l}WkO%|Y0d>?%Z4fmiA~$#DKe6^VIrNhg1O z+H)=Xb%hrr%^K^)l|5^3q_kG;oD%x+xOb87ye^}>-w_$uzE@~HI_y_foK$RlfX5ZL zYm8d*V95wR*`?PUf4@z=EY?<>RB*&(gHkUo|CpZEHpp;N3-lZs`ULW_QFpqxhyml> z*Onw4JUXuKf5&&f4GXrDH?iZLi{R?mwoue8{g|%UE04tiC>1IQO`uzI-RKNf|o6>>y*Q}I1sHi2Qc0h%| z<(QPGz8GrXVb z#lXTmlSxL9p1L>BuSB(qd;E%E$0sMB&rNfBE%q`TJ)2W&T3!{tk-Sx!5XyM@0(3Jn zJP2w5Qsp)5RK!iH(z>{tifJjgY)@kIxbif!uM*5T)^6gw|)GPXln4u4txs3D5OMUXL3+|kk>)~_c*SbKMT4F=^ z4(7;55*`YBwyJ5tP!Zg#OS~s9do0`p*~MvZM!MmJy?AUa>7KN4AmCpBPNr9+JE#-y z)%hvRo6_2R8&ChDqPy7bH{^hdq^aKKYdK+?23HBhzCGcM)oOA(U`wEwN)%YE#RhbrTEG}RfHj=JMC-lGNWo={qr-y ztG6-{H3%bniNp-;wYOl)$L?r1`5qNJYdadLFut}03Kyu;+#Ol|OIMdWD2h*qH|)(I z49?@WSQK+rEi+oeSDKE%&__$ap0>EqZN1<)qkD?K|i8`76`Om+XD^TEI!?8Da`_we0{n1V+NW><2E~q zRYE21hBTp^hpT0cGoLn$zQ?rsJ{h>eNx7!K?-r5EQ16Q=u!X4Bn%+k zHZ+`&QV+pie^xCXhtl^0U6#@eMzi7>*UhhWk6Ihy}R}Xg((~?EFTQ4wWS6gc^ zI12A6O}=s9<@Lnag6`>yLCjo3IQsP3ER-SijvYbLav?xImYH zj7Cmm&P%bjGM9X}>yU3{TrCwTA?2%a<_ggV1LHsu@XHA33`ucim^br70pMvD*depq z?A;7f{28}TjjqXfx8ki6liAa2F(gOz)|P-A%#&uHwnblK^E=oTv0mONUnc`)DXZk?N+Jz|kp$N?!aoYAq6+CrIDBAMAN!9Y8nWPhZb+ZFM|-90 zY0za93G&+ZiHT%F{#Jgq$Tu^&zb@rO$9$ag)prKJuvfDU^S?s$W5^<4gDpzs!7IUX zYePQB5Gf?DaS#W`NzZ_QRFC@W(z2&zpVDU=XRb%Z{dS2iX&p2HcXrvGm`H4P&74Md z6RM0X<67vOi7l3Rmb+~XV|dNwR(By@W`yV4>bM*hjT&WBfJGn3O!#8;>Ea$n+Lo-| z8rI!n^M=f8ioMyVi7=+8(x3Es`Y}5Kw98GT^OI%`FD9Y zD^|=*5#JFNDe};E6=ztp6-t>eAm0EDa3Bf?u4L!j?-1|)>ApX`#xrQ3M6^jRd2!`H z6n6S_`?&t#Oqq!wL=Z(xdV|NCHqG0JOE>={WIy|$8%^_5s*Lr>nDW{iJ{I;+Ra|MS z!rTzP8F4r$&`h2X7=QI@uJfg2aVYDh8jw8c*=>qBj+AV^8DE)x_P|Im`>#pX zkE69IqJ+Pw#9qf|CTSp?AHF=suieS)+?t4Br{5-lsxW~;_)$of((_Bno}@o(Yce6L zMP*29Yef~V)&nIs5%+@7jU~`MT)4KeI#Puop;{y7mh|;L(4<9=#Dw&Ax=1FdqdY!s z`i_UE`8dd2NA=hj-nq^F?T%e~|Fhnz`^QKa#*AtiH+Li1&-77De0Il6&yk z+7KwLn>JLClmb%sFy2&r8-yFf@;uRcnY@9Kc3k)x;L>|#9}=( zJGMo6>WjVM`7?p{8+e=xEj;;+Pt=dD1@06rA&^tU5HkxVzSszC zM}<^=526v;Z-ZHz+x?x&zCMp=&Y0#K9wOlGxj;&;XgLFc8L89hxGqsy&ky zOKT|s+jW}!4P0`uDHVP@+jL^Yc)TbO`_@;pNGGlv!NVmD@ol3^>B3tj@pd7A^W9qdUB^q!9v^ZX z93dGXEm0aK?_YU7kM;UTu~cuTCMrB{4e1Ij3AL_J)zb7g!0rhHq)l0@S`IR@u5YjH z;@F5xxlcAPZIOjh2yCTO!vkZHD(rgv$ZSc9L}N71QE9PUsw`UukmT>%b|8B-#13k| zo^W?MdTJ-Y2{Kuf;eYNvNWcVduJ=bir`_G@T*xTQf7h;68+OM@U*s`6n4$WKjl8?b zlo4jlV(8wag!p}DA)$P-%sRwRm)9>;J!}s*2*++edU|;{Z{nUO;G8h6z$IW>fOB0x z8j~l3McXX%kZnn}r7dX`)WKXdyHUHklhvTeoCOV6Ij**|H8+fWOA~p#0cHF&6sm+E zu?MP4eSYBOSxoOx@4v=h_6WlKkHULXU}$_Ja1(uIOMHeA6!nqyhI#?p1l<;s1&d4) zCuGdlZ_x^IWJVu8ZBmS?dPE-b8^;SDK}4{`j;XNrH?ZheL<_CBVcok7)RK^|pWSsi z0iKr2xh$O#Z~jpT$Lnf=R_!-Yx6v%=!klu@tLH|9P4m4v*)m-pt8qd5}X zOD;_<{MK=`uF(TUPIjyj6P2Z;D+`%mWU?*8rO97;NaNPoDouIfA0*ssw(HN5#Jc!$ zWKMLnoUr70)DI0iQ603JxRq~DcgJ_~BzX6tk@yuUE6bNmAP=>OR>!%x{dhxmEPrIK zQ6@D>eR4NUaF0*^P*f?;aZ~^_g`L=XnMh*%0KrZ`l8Nh{y0h4|*++8&{8Vq}@M?_87E3V$!KiBK!}D zFmedoTsZ;BNzeymJw&d~rfqIKHpGW@{I& zcdDMZ!#N&xlNOsF(;|_k0(5#Zyc#j7Na{$Vi)(O~dzh@RD;L8lR&?Nxqa?O0Sx2F~ zBa~{w>u($Y8!zNO2lsiXf|&K+qq{{)xZFdyKm;<9t;+_T#d_h86>BnQQQoi13aVi0 z*|xs7jFUBG_ zcOvI&8o&S~d5m72FtJ2ODiyuBIrsCN2dkS5?*7e~GrB(i^J@*+MR>8@Hx=n6+-ci# zf1i0r;8`6A`b%8)ZMCxdPOP&nciv>_dl>Oc-tpmNOGh#8X8JHTQbPJ*gyzQE1=T3V zw6DQm^(ttyMV?`<*3SvOnX;3aA(}^in1nQ;mXoyE*FRDj^dwou_;{g8i*rhI=lDzi zgZcS>?E~?w?SiVxxNP-p)a>XJN&lg5Z>+qFXKlD?ellI=9ZnkCnb5Np5^G}pAs!Xk;UsSL9{}d6>i4jom9d7FnUmvz?sp}Lh;V|E+3ypj5p=;X zP{b_Cyd%(+<=G-jb#>Z^G0>vb?}OOUdXSFwleoM96(y|Mqvjr-B{DIHAdfp4RX7hB zMT+`DgHctUn|B4M9}g9W#Z~Mxa_h~14~^-ZCu*S*)||dNU}`KNp3S*EsscuB%w@A? z**-m7uBN%?#fnm!a`Y>xrz=oKEfs|I9|1UP{zmef@Ovh|gF}y)zP+2;ar{x(U#&2c zZ!j|R=2bHIZ|O26ih(GI)}DJ9lw*&`0v4L>DE~K`m7#aN_yZNh+?fbkZ)=lBzCa28 z!Uc^u)AD<)3LCZLGu9gS9NfWB`5ud`kZ69ZtX{5@tdY#Pqdj3#H&MEGLho17tgGO` zv6sW3vozL5wcf};okKw!F3PH`+AT|k>uz9go@6tHp;vowil|Zc4BtAWrKL*XliJvO za;d?=LK;HjkcnIsg$x|*V3aLG#xG#0Qu?4%rB&l;S*jTIVAO+ZQfPn(-WHR=WbNv2 zX$TJIn#5|)y?^O1?+xgz3t$Nk)6i`GR_rY3nem*oU1VzL53&Qt5a?P5$m2O+7UL*?w+cU>BVxTz_Yqhct0E1($`W9Me1o@C_m zm}tE`()D;2St@fV&zFp_G_6+ZlC%W-vS`mG$2`+u$Vs%~J=VUf_T`5X@E+y>Ulwr$ zUKZgYHykeWdw*ZPd(Ur3hKc@@+ub~iS4=F7Yh@R?c9Sg;*#7|Y?VDgoYMvXh?XJVU zUt%l~l8>}sDot^4)~2F(&e3FK>)}Ph{HgHDw7gFD?Wq2l6WlWC{)Y@UWy?5=;_Bgk z0CWHALuXcy=sSk9o5MuN<;0OU>Q1t(iEv@wW>hHZ(;ij<9*!8P!$P#p^y%`d&OjnZ z7(wt_NNHvXTAEKD^x@^l`~GFroZM5v7f`6`+C_>e=IXHk;GO?b)RAZs|504Uocu6n zN8p~6ma`m}y(u7lxt)q+YA1eZnux$)< zU7CMpW2^q;_ngrh-vg63dDL44Vz6TS;)EW8VRu+5@c{~^jRYcLT9(4UR#DTk3*MQ` zxv8Ih39JD%y~wNl+s%ZN+>L>)g@*@ks-{lYILF>cbF@BeDf5~!W zgnzYZ^8Rck*0jA6dtT^~kq-3E+t~=v5Wgi>&aJPpGT(zL?Ba(@ti#5(ga_vV>Xr+n z#Ke9Aor5=UQCLbE(_>fpFhBAZ0p+Z#rnRPwvZn%eHc#LYD9GIWJ1+LKguQXPNgSzqUpk9c`LzN3Tq1*A&= z*lWW>M{?}`R`QGAUXaXzF$-o16iC)NIp^`P`}W)jOi+CTBC|t#=A+{=v*Vf9r4D#3#MCZ!a*bfaaR@I#)>8surl!E&9n zt+Bx@k@mEv>K}z>4p?qFxk*n-p1&v=*o`r(|2&7xX}*BB;?2&=hKTe06GRMNoe!o7slJ;N+9P9R&vy{7uUFS^4LER0Qc1P56F z_Wvm0-?5Y7i%;jAC%-p8T;_dC{Tb3LIhTI@eRk-v_+Q1x;q;>p&&4+)!qp+;7=AG* z7`B2iHa2Ep2~X9F?t5)uF!w;!T;_|JHKd*qD(IJR(zSehlcYKpcm2H%8>cm`5TJ$- z35s#{K3Q$m-dxjutT!?G^!ZJ-Yl9}xL&{o3z}^+_n4^{7r4wF=Fd`3%M(2Aq?sd*J ziH`|*q*$97I3*;L)%M0TEcc&u{+i5yjmIr#kaEJf^bC*J&+V0d zN!YejWn*$U-y%pV!1V|)W-Bs8@@0=g(&x7 zzN4K7>l4<5+T`V6Hrvj>R_Ip_?v?Z_&F-ZeDdf=G|0ovUT-xH-oi80zy+VtRWLsm^f(|hmTUV|J4+|NMjIy)wt>W2Tep34+w z=1?nvwiGlTVDd}wwaH28}~_Vjh#3^PfKgnWdHE<8~2??invB4ne+q zPev_oFUw|m?iIOJ7iK;b&VKJ-xiJg8y5Aoy`FpoXFTtH3Pr9@`%68YcVBk*oZZfP? zB$1)mcCNh6C$j*yPWRABK9#!XY)mzWFA!P2`zv-!dZgV)*=7&aBxk-m*?00CL;TcR zWpWVy^D~Wm8UHBW?q07j#OQE1xpw7rOPhst4l7g+lN+%_VQNduhWWUvYwjO5^psp* zF*2$Aqj>)P;qfm6ugFcdy6&!PTXa?>NBn0X2~U~zie)flDYe|rn;u-cvYSC`vq0K zDNGs|)_kNLPxZFpCBMhp1;}W*C~guq+;KSA9wvGBp&M3DSepW{SW64Id8)L*c9;lx z@}V}pw$w&Is7tZI6;k&Op_WKpoUVPxqcM$3cbH&mk5#+4L0CvZ7mhVXWnGaLy%1#- z6xWZtnTT!1CA3vMV-Xm!XaX#5;Uk|z-UC(+dEhWK@sBvDBiNm@0YP>z01U#n z>*fyD51!8!n75)FnYw}*%VLQO@lihzCHWZsf8wnv5m9i z$1DManUEWTH;eRB#Vf84<+DFzuBH7E?tA(HVapgHc8&n#h>T=gZ`7@3JP3?ljZs?r z%Jpi0EUkoF@lVD#MyeB9Fnp9fCv3#3eryVjy3P59?W%|iv#u>y%0qVU4g+HG?fTw9 z`dX3%kr77_7|_O1G*eM`O0}5FF^f8BB$kF_cb4WUxm5l`O3e<<1(3r)!_03Z)EXZa zEb_?LMKfNG9r8o~`W0fqFd*{e^XA{|qFY~HWG~E2Rv8mS!`JgHF~Sf(jFwB7U0U47 zA1-{fy$7xgCsMnP9Bal=i`JtHk&v@s0Q zftyi=Nx`cE2a2|RX2CqNRHk=LONJtJ&)G`*?R`eOTKM*{Z5<`cr?bHNPL_d{9Bz^Z ztH~v0$h*t!ShLIbzBt17{!zbINrQnK@!22ve|>@q`EE0vt%X?}EF#$8rO%hLUOpdA zcPXp&rqGdNmTznzK>E?iSlbkM*gIqVmlkjYU(lxSlVvW$}GS$TPR zTAVnTd5O*o4^L%pZdt}3D6dLv-zwxYc00=7B4*26lp-(9mjQhZ2n1%AQ##;!JOZvP zbIAoG?UDnFDxyM&SR}EdCSmtdxz6(do?uUgCK){ z5gXJlA_86gcSG>@f_E%m7qcX#M!u4F<_O~!RwE`9xv@6P+(^er2-l@$BWsjl6ff zO|R#K?P7_i-@(`&pfLElI{*q43EUN|^^x(geqhc2#<;;a*xgq1_@F)v(?RSWUry}= zPz}X%Y3*G!XV(s`RvyXw(`87oJNpb=m8@)zuGb&DewgRiC-@)$49LVHaR+VwG2))s zPN92heWiC@*@KVWn!;knX8wuobJFs=5709N#$0Y0$Q{HcHI^%H-*xetz(iM z4dLksZ_XXaMAE|-AMcl>a5POr!(DB;3z!J(ZpknOq-4Y~NSl)>Eg_P%Ph%5N!ITX0tcd%|BP$s2qypn9=2ul2k z+}-mXr9ZM>m*L40T8q=P<1^}D$FXb{e=<+devtN($w$B~(BR)nS6xJbDlLw6%ejCx* zo^}=H?q)_DCgF18!_)=;D59&vAJ5`!1+ouz>J@Fn@g)B?U-{itA{cA^wb?_EyMM54 z>-ll?+XTr6Yy3rtcbFDuJM&`~ zRu>2py|A*qPs5<&WJ_n&hEh#8+s4TB2&-Fd*70^E$`Y9+3(4ZjsV#igj6MGEKW=$i zPV>@JDwEv9nQlc%Pe^h=4&O%fttb%IWw#?xt9l=l;kDg0?`>Oq{TF->?(wcIe?H>4%WlY|Pi^&y)^r(J6o2i2Yhe@jJe~+`JvU#K=8*beZG7x;$ zc7tnoFB*(QAYF`F5ryWri&+J@{^%ZU@r6x928PKR(2QmXuVmI0bk-Xh{>uLr=_RMg z*4P*!uzJbkD9_}N-2O~g->{A9 zT|nY9U*69#(IcbCqLAeOE}C{_x_0tVUV(L7zE6WEW_%fv@@pgV-|+sUP@gG0ICNYU zanRkQI_Tbvw_IlUlPye~N4fFYe)o^Ba~~3y^usVcbv|ekJMB66)Rl5Vj1T{SHwv`r zIl?!%I=L|2c``Xmm7fruH(*0^I6-IV{etYq-nDla)b=&Fz$l%0%orzFl3l(@MLA6- zeL0^b(H-atFG%Jx9qb1Mu=O&*JtP{xN32yd%Z*8%mK~&~|GZx2cgG4tl(lE#g4*Nl zIt$iC0}40gYkY}Mg=4E3UkmcwIMBG&E(Ly1f3)olN3R@t^ICbjriZ-4*+|AW-1|J{ zu0#96@XJ;JiRF+9CI?yN$0tP1IffBJ|H1;b+sDiOj;>j@YKtDY(`zSE343Z}wNmQM z>=16O(`sx?I1&{()s|$7J=^@`W9?-U)v~Y8`VBI0Q**Lx`A&pSj>#)=D~Vy*cx=2M z^A|nbp?h%aN0BSzP;uz|*O0)L@Ng{Y;-E*K&U+(*kHF~X7?`*;2Hf%NmtOg`_Ka_G z(*?!Me-wqg^~zFPCz)-a+96VdIO{>HyUt~QiH+FeG~2vm zKTyW*QsPL^?-vWisO0JvRE>6&ALHx&546og-{_NH-r&;V0H%G9h8IRCd6_>a#iI{K zL8aEN4U#P5*wpfIjLa?5JD)15qPu;aHXZe?0nS#BN_Y=xVmL`+El7mFt~AgW^$Rx7 z)bhLhUIHhB_v5I->Gx|J3$J9%Yh*1`MQa{^N1+!H^0!i+WZr$ali8(s9($U!m@Bq$ z5pzg~AzUCh#yjijaUy+)%;j%6Deh}^Ea%ahFty$_*f`}y%^kMHqWh}4I`8>ojV?5Z zsY^##^>+5gaq?yVFnR*)EoAxjAtJERJlia;+*F+F3rsuoLz``G2xa6SY3xEK=>kh! zEU;IIkT3bj0hg?yD1J5wQQNKX;kp;LD`N_4_uhnp35sDXuRM0k2pK~c_@opr^~wPO zf%W)m1!|noj~xATI$v+eVH_8)aOZ+F*}esMFccOJ>|&(Tkv!rJIhI+hmZi*QrnSJZ zkx<%#jI&iYU;JGo9Gfd;1qN#?E(6Gy z`^KciLP$9G#--LedC>_oK7j;fH1kN%uSP|iaH>d>PAt2J@KRYZn|{DQjVy0qdnn_s z1`zXqyBKDThL2VjSH(ja>|EHQ8e{1PX|q%qw8>R2EPc2U5vC3EHX(;=wO6m}#U4ZM zy}niy+WMIUq5;o{;%xJZkS13#%^<0c8pm2UyXSqOCv|EABM!c{WAf|UBTn^ynsV0g z%0jx|YKjZ!-%SPzYOIoD9p`y;%)V}O*@pk^XljEK1XF;()ugnboC8F0Qwjsa3udXI z-RFV3@Gx%>Dc3cZ0k-_`4ux)Lyy;b(N>n{u^ydj?3{575#9~K)=!@}KW)cB#mwBg!$vnW(``XRTi>*wGY%J!P zvm({9wrQabcw|D#g}>oamTcNu=e-K%`1c}7+4n3*M>!1Ck2aTb{C&>9?|zXcgfV{i zq|#7^jEOvLhjO=8eOAMa&d*GnXlV1+_Ztec5A$m+t3;8AzahANM2m3cH^9&KF68DH zt?&<8g`!_fsKqQkRK(m!tmnf6!(4-Kw|a#;XAMk#n`+(47uBP=y*5}0BZ;<>E!`u9 zgd!q~J!C*s&c6dN8o6zz^#$cQ0RuBMg)~9?L)(ly%w38aud|ge8kQl!ELhm`hgBk-Y@%3yK@z_Tm*Oj3FC7O8BLlXkNikH>Z4+iqJ0_b!{7%ifI90r#0Q#U}%`P}gLyXuI4QdeyZGq(CWb|Qde$RZW z=uIcOz=BsrYPLS%s6X9&KFp#JwwR6sd1|l99@9BPQ1e5ZQtxqSj#x%wyL&AE7AZ1)QIf@+App?F_XZ*i&u3RPDMt{z2s==e3& zt%tPm69QqCcYF|1q-4_%JHH|`68CVq+xwz|xuk2!=tZ01Y{lh|u-dwn%F?CrxRM;1 zhmU2~s$YLMP=8(VsI^|p60HPY4ZKuEbYA8SBERg-q|8;{eLNdQTflQ5nH0BE9Rb$5 z9JlsY#W!ad`hS`k?);QxUQ!!dBqC@vGgGb7r9h1Sd%B2XvxLKHco?s&eZswMm0Myg zuyQMB`)bb#@pn7gY{J^f)C11Hm1(KErowWtX{B)Vg37QAIjz6S-{R#-T$;<9sZ`d# zv+SYdBJD^Fu?#Esr~VkQUbcgG6&aNYs7ZvwUFBw*S$I9E5LVxQ=oG#@N>-dwc*@1p8>b$`O`Xa( zkpChPU>vYKiCjNXXufB1T>93)`1hogFi;q%wqIJAUs>|4-%!I?SNPSiwxO;-T7cbu z_IN2^H+=A$*B+24+`U95NtYMWCi6Z|b+Xq3-8HNVXd|!q+bk`tssKL;BW597b z4x851(x~eB`t{0fN)bdWolbM|rE9nFmD%smQ8)?N3^APpm^141?FKpwu(u$MqnD7? z4=>C7+ccfum|fVH8oclZ2a|KjJeSQj^Swcx76nIM$2W+~tc9O5j(;e|XjIlF0qp3| zd`qIc|0rZr8&gb%Tg0MSS$71~%5}%;dX9Jgc7KaFMq75j3y=L8ckIPoq-lTA z?#-wic`A^K9il_5r5B^#ZAT|d+~ScGTPDDJ%{8>t*&IjRUC{ z(5zj)h%L6fwa5m4IrOrYxVm`7Er(atv^Rt4GG0fnTsb8ZD=z&2N$UDW$A1#1u{Gnn z>}f?)3~92(n$?|E^bXst+in5N+y36QZDHs<1BDqPE8&drBFYLFC`~jjF=mW|gHw6* z$%3=iSg3fSEqTNnCi2$;g&xb+$gebtOz%{=3ILe`3JIE?FIum;~7zT#O-x9Q|05r3Y_>+>UF_rpz`${WG0z$I3@vVBWbGLV0&|OP3?^UsaE%-~4(M_9o z-{>-YSID~Ns$CUOc+>m%h|RC(eAU*9iht$3eS=J`4FZIz4mj6;Ox(TfDVfvk#yQ^6 zmNJ}8tG){Br5emg)N25Ql;(*GlOduc&Os#Z%Cl>gktF+Un|)JkSv{Y^P>Qc6;PBz{ znBS33&xK|@2Z_tb?)$An!J{4g@|C}s`Zhc%UX4%xhNB!o>PGTQ>U!jxbGmK(_bIcB zpSL-saDRD9@43uf*4i{6LLyEh9-j&_ajnEbp{7#PGv{?>r=}e0z`<3L^F<%p@5)-f zT40QJleWY1#tCqXNxyrTia^}vGnFBJT3QEm=mvUoZ@8I}T{4o~9L&1k2ke|SmL-^x z;%}fNt3Yz_139xX^hd#Eyqg+YBzgv$HC0LXl=7gxCvd6d;6DD zxz5e?z(^F4*S9ExoZO~gHt!yVIb7SGf0lJgs(j@9@p}8Ifq+5x=1!rar+t^HKJm3> z)TWxk8r&a*^)xo3HKk{D3hWXZjULoxFtcl_|Kc(@eE)LlnLl3caxVitp*3uoIJMWj zlzfP)-eo$tv-?2N9dVSTQ$K@#2ky~vw}kp6MPqpdb>=AFP}tSpUkAuN>^T$AWZk(a1?XAzB|SM=j`ve`ObsX@PgUT7wuz%X&Jcrkty?Uu zL#!ctbp;;BD*f2#-I!MmBjZE`{ETtPdgW1V|1qYVP?eigN_RaatEsAA95<7)bk7HK zBKBNP^MV>d8D~!ymwhjmJT-qO3=+gIw(YG`3o^#0PGgTP&%q1dc`?0D5liKjTk*Fm zb!m*qq2fesz_ASSKf<`HJbzt``6~)>hKW0L89KSW+UFxqr#T0mp_hQ|OXzBKCE!=8 zb~KB>4vQ*pn@NTs$0Io{%R!+SWX^~`X(Ph=jQbx&cX;S{HrJ$rl481lfFilO*{YQD z*Hf=>)42djil3%qSNgZ85%dt2vM~!sx)_8v7B8L1@6<9%i3}Bw$FaukR2i#+6(p1s zARLxf@iXfdPwEBwht`$^C(^?grPn;a|B7FreW@H}tK1g{`i$OH$EA4Z$ee8;;P}rs z0=M3{`1JYwkgYXIIKL|I$|&Kp_d*pSx%hGz6ZhB)W}QQ0iv0`?q_uNcv_w=}o(6ul zam}vCZ4zpNde=zIMX3lNSmiUsLOz(HGZZ#Of*xcPhs8{9|+L->t zFIir;qej@x`a$IL$s6eX18lg_Vr{7TOZ8fK(~ffG4C8Lh*yY-(HjEJccSj`a6c3Z} zc3VGK{v{#*kHU2?yk8ozXs-RRrmSau`L?!YQbkE>(*4&5IeuvTq>NQD3_IR}wQ8OA zq7B$Fl7!5CD0vqQ@(v+IArdME@ab(HNVp~1DH}i|>GNDnO57;*MjC)#G!`nb9U->Y zHP>S&{Z+<0(As4Y3D=DrYj=miL<+g5T-@B8=9#YhL8L`RN;cDB zax$_TuWx*$P4?G?(gI%RO^4;$V^OtY2u0M|5##wmKSL=Ewb-NNn8%qHxtzM0i#s&% z^WT?ZUf~z^B?Auo)~4o3HOaCS)&^GK05#XR|2E6Z(lulCJuAljBOMjJ^7t=CH*yEI zo4zG6k&GiJXM1tQ=k?&Vi|W=k_t%eFLfA>h+L2k?%kWE)aAlN|5RuQ$OE)thM80Qtn~^~0>wPXMXZ7q&xtE*&2ni8W@!}n1Z_pql@u=}&Q134$swp2q^*cA zO1%S0*_>at2+HyG12Hr;F&HVi8O%8(<|kP*2%Kq!s*sH*;I#d%N7t8d;s1-Z_YPV9K@g-%wf5e7Z#82DrS_^lGEl2Vq6BF~(kI{h z_dNIUJb&E(J^wgzIIio;nQ@-EKA-dbe!pfoSPUvtRjpF)@s3Uwi3cLOPY?XJ7rM7V z)OaBX=o*Kbvy)zl?bAo^qR+{}e6TTULbiNeqr%;ig>u5Y6m^?bpxme9aieT>Z0Y@2 zRVJf9l{%cd012%(Won5d^f6}L-&op6Epx3H>|Tq_*Y#M`<9Ztd<1t3P0>(~)geOOT z`;mW{7_c5~y|nygDd~{u9^KQU-}V%91#y2+SUR!4IlvF}XcvWm#eVl%EUM7f2tjDS zQ4=mP)?#~MrE$^Ff$rqg2Ww)qvfnx5;RG94esJ&4xPHcOdxB#_C%VlQtz%0ylEe+a z<&7Kd+|92j%ljLA&4+u`l^AYhzPgp>wK1KWCK6X(-9im~&N5atX?W%L_;o7J6WyB0 z1_f>qV5p^|DRFK1x}1}$5Vmf(oo5*lPFM!?BE3;ADcFzvPG|4(F9!%T0pz%13HY0T zZI1>!NP|ESS5BY#95(ZD)AC>X=zdI^4i36 zWNVg}y<)d}pHrD4`NH4T0uyEj58%yRTX@$eSO}_cqU8{&9;;f*YWBI=K`-Pi{1Cp* zJp_x*yC3HDkESfd-}VBo<|{{srz!BN6vni$Ah0s>DO2-@yjQW0Z)TC8X+hxhAZS`! zh3wAtMr5Y+^BTIL+{}&G=i9OBr|W3$y{76T-PfDf9Okf;uYlY3o6o01!Kl0kj#c|1 zHGF;uXSfe?fw4t|>*@~tvEH?viu}Y%?a!K&1r|fOG)-CYTkCk7@+sUE3DG?hs&lz6 z);jwx(|n=)I&OG48!>*qbRB==H*bBkK8L5uom;)xq1W#3Zc)rn%bYy(vhCSV4=k~0 zco&$R8r=u6lf4Tk1ZcNJdCr*5yxyyF85jAfYSdd%erurkVY`JrYIt0s1f@7yZ|#*j zEIl^Wl??k-UZZariZg$LL+ZDOB*2d-Ga!F|h@-IZt1%v%=9?*(LKMR+e*1(ROtemY z{XH2Y`lUDuh?uJmXIX=N{NpKi+9@lSf06JA#Z%%vZlE!eT=$|8g3G>czJX2-XX3X# z@0>M0_0#Wq45?kCI4Wpt<_*^VlC$CWf8?a?$$#Zq^!D|S?iCXHy82?;gOAmPIbt7c zm^)}%iiSoIK_Ng$QrIRL*|3F9-XUEpTNashp%#Gv8|X|6)mg>|7L`zgc>tJhx&76T ze_-O^r`Mf*deE;#+|i5a*S|hKo`3lJc+Xe-6IEv3O=9+PeFa{!S4;lXd4_v9P2Ml*CB_O|)cfBDzLz(7Jw5 zI*8|jx$Sz8+M(a!_&0NKUlTJWCUW>Uv*YO^IxOHWt^f&kfu$>tWp9E8mnf9{O?B*lp_-fg%7!nA!gX~6PH!)XzD`2jeA~uuK4)Fz%F878OT#eY z5mI^qf!UiB7vaRnZOW&?8#~_JPz$rQ(EfGm)0MaRHT9c3=$x_AQ~xilEzt|7C-YP6 zzOP#y$sT_Kc({c27jJ<0)hJ!1I(86$h{vfbS?1R>maGSFf23GH6XgQ&Ha8y2b&fi< zw=nga&pYi_?D#6VdoG~FmnM0J196nxXQv;1n=L(Yyn4D1$GlXRg<=(h#aBeV#AQM; z6EjQ0g>5ni>ONNum*1+2WXC?;Gd+t`4{x|1xp_FLWf?!Ppz&Q|c6wf4*Z8VSE5nWY z1{C)o9Y%yn*XX(M@1Nsws>ZQxV4rm>l+AO=6u%4->_apZ_PB13XcDqBx(T_=J6~8_1)6bccP}@ZUUyK9c3ZZ&?5`q12x3bqSG@>W8c89@Lv6>?Sj4!#x1oi5%U^2y zyzf&A%W;LEvoKna3)yL7vThtzj1h0GIfP%F|E2oJs<~yuUcn^vBW>FZKMw${7zXDR z26_1RUY*EV|9s64>hP||%CBqbO5GUe_#~W0Gsd=>#V)?Ba_jPDb6ab@_!&4=f)Bo80d>iU97an4_uN+TO$d~1YhOA=bLPTVg zJjqv3ao1vy-Ds~4UE0(H$wVW|N~w%g!AnYo5${h<0v?7CSdq5qjDIc}S?3l;+D?3#AKeQ9=WGm4|HMKF?%n(>IQ+? zMozcqtAEy>p*a4e_8h6n@=hB!AmQo z&F)=zc&(I6%J`T0!qWmp`Ij(BrB%S?^S)r6mRLsiwzn-^-#@$>U=h(^@|61ZXndAG zT9zhY;@fb})a2S6$`4l&#S#ta5JG2C!7wwJK`ia6T}e5SAh)LPkUv8?&k zq{Jh8K{#;Xr)vQ>G2f5t2a)AxD|aSYC!v2h{s*?5<1;X@(ygKbVmDD4eeuST_Te?D zEMG9sZ(Ui{`Ofnrs<{J!8S*vq)W|L1)fS6f zaAP6L*VL=nGvSkp+h@~tJ87-*>+zk5K{4c2s_@JEC>1&W(<>kWoSc>T<0#@v5HI~K zzlW``Pmck`_6;3cAPi%lUbb1Y8 zM@5;P2xpU=7O7_v@UB13B6$bO?<4D@q@TwTXRgI_PqrE_BO;u$a1uC(gifP%7m0K4 zL94K$t>}nQWlGuhZ1^NJmD=yPRtkEs>08*?{z;T7DG# zhQ+cf5k69#i)vx3<%8>xP$%qJ_S5va{uu?YY#F^LOA_WnP1VsMcJVL0 zIJg$1ZEz3WMDNB$CJ0{JxVuZy!p8+FHYHGR{R zJKGgPkk9N~bDmd#Cd}al=F?h_R!UOxA-#w;yxnQm*Q#3#$HfzC@(111*ey0bLL?GQ})!rM3@c znX}W1SI}v0fF>!lig5ELj|{X$&&&sHCTS;=@bb-||DyP9=0?&|u;c@L6pm(79FkSYRyV_fV<>h#mL7>!%vI_B=*`dmB`pRbeXZq{_H zZyo(Dfh);vguOVHwQ~-}mp9&j)$(^Fnrkq^ecSh5;N@Jl<;e4=nkkKQDoxcqF{r4p zEPD(O7=y-nttj2p*k(BOz`0r`-edF@h+%sn_%b}hSF-{Sc+D*Wh3Jxi0fd%j3xrH#?C>WGKc=GSv?)Gl0ytSOvacd zfrb6ut6K-5fcUNPDj#c-X&cH4qxPK7RPgwrKG%bvAEf3&VZ5`~@rg{A1UUiSnpaR) zDhF;c)Lu@G3lbu)eSn-YI^P+s+_39mjdlMnsa5L!{AibnR2-;_vz_TZ`GTA8uI1>O80CVy22=!TWx` zGwUZB#`j%)4W5|WFd^Ysf*YxB*-OEWla z{vDB(k&V(>6}|H~i}F`;k(W}tJhNK?aLyNXM1W-S7pZ%yIHoPVKup`RZZa6S`>3(O zH2TTyirXgUhNiYamiLOf)No#-enD5~ z`qgz7gCB9BUrwztlO0bsYV8&SfR0G4QY_k8DCm;m*uFBm=5Kco8}nKaDGs~cAm<*<?c9M33ke`l?lOiDgfJG4dDRqzx^<0d z;gvn*0!&0(Evl-4KFv8_=}vLOm%a2@<;FW=57N5%p8$k9&ybGT z>?_8uz?w0lEh2H!^dUqJpYKh5T?EGc!Sfyb-pALhQ%29N{Mx#?#Ex zDuOuMVt(?3l|ai`tF%MfBN1t&{sX1o;1KI8YfY**7%pnkAKt4Q+opOA87Xf=JN~R} zT#+g}<+k3(ZblBBP~$zxTfjP>N9G4d8KNZ|v+*;IA4TKUlZDNC>iJgQ?~4(aiTAO&cv2nTX>~tL;r<%FyMHF+`45Qn&!Ivp#9A|X=-<>>=y0t z@0Ab*qIhSQ^|?ICcBWgVOTl&f$S<_)LlRw-P2r51*85ij@~JL1KMc*UR7BEXeM&cW z)=^rxgO(2EW~D#NM<8*KtIx7S;!=2@WTS%Sp5e0gyY9!u_Mo;t@HPy1AWL2WGQ%6x zo(O5*x^Ot*wlg1ZQT^BhkXSi@J%8lky-_^!CR%R1`|Hrwk)*YVd4M*Dt+c73Nw-*G z-x=wQ9_Y9f1an>nLJ;$q=~=5@MXe2sB!d`l)-RWcC&SNVu%iJha2>DO0WF+Tp>c_t z-hHBf*vg1Ag@dI;){|W?EuS#2zn+R6DpmC{2Ej`gha25@kDJx8%NN1p8u5?}y~_4W z9|w&>-HmkB+ENIkdARjS89e^V%r+gybA!2@n}GUAN@dR`gQ1`IqM zI(@dexwA35BkQQT8@rXfPmAa|%{<dx!B0_DyJQP{*+S-ivO`NoK6>ds^gS*W!# zScf;Fv}C1Y-Er<$gF>2=+L{VUnW07E#AGS^%1Y_W+Y^7j^UezXe9zm}R)mX!lkQ~C zD9b?M4-(eYf%ZXlLAL;-j%0t=EyCb||;5 zydZL)+-%lHL8XE`gMajc#F9E>Y%P=o%Lz)0<6Z-x`w#l{GThmeWy3Xi0A^eymr=#T zk&x*cZV^x_q>AHt#f{2Yy$el`a=>x^n^=NNFv!~Tn?!}^u32ff62LR*AI&wK>~h{C zIi;GN21ZJUH<_C2znMpfZ;ACjJ?B<<2FuQIbw!Q)?c2UbX z1lO8sLMqSnd}8bEGa#=Q5&IZfNYZmSI%?tUVWq}$aJ~3e3ch^v7@$W=k>AwDP z);EYKF}ZYXzcSM5>Yt44XC;6;;AjPqLbkr|v&Eyu|U56g&qh>u`nn**jw=mUfA2#VZPGReZg3 zbBoqiDD7$JjmyAB* z>f?b6GK^f6&bTNM9(m!c^)3qB$N45t5FaN2?3x@Nmo3h9Vy-0*F(-=CmT1(CP8OQ} zfi%O?&BygV4h2wTH}wVw>El#TBgAAWAZ`OX3pKFK@7D zo#g_?xK58&>Xl}}D8(YzAv};B6mgOK0w?+^bEn+U;GMenP5Bsd;|gGBJItni%R1Ms z<$c12>3ggS@TZ&ErBx!E>qL&n)Dd(;Jm@@r|EjF=5PfDa7TqZ59>57uySbR;H9a%^ zt6}NduHZ(DzwxYI2HV$(ZwtaIXS4?uUA?~IEp}*6^--jy#uP9Zm?`DkIFy-eZa^cs zv+D8VBs^>jFaBS-Ew(K;Fv?&5q$+v3OsiDz3j4h}waGuq3xovv@1G0$%1dfC!u7uh zVsd;5R6XMqp?+>A&K640i{-7gJDH~ZhwmtWdBFN3BPf;K1j(Y65fFhoTYtHervA|w z#gXd0LS<0;+KhoxR36y>jsL3s-duCiO?L*1BTXWVT6Zq(6;uXtrI4U+aMU}Ne*Kn~ z*fkVbEp?#hBwZJgI2IXXS3ut{rmhrQY?Rt6>Ubk&d~QlG-Mm> za@mU?`2~alLjs92%QAU4m$gu$_yso?j<-r+xPv0DV-@H9~ zU-Ht{iX9+^IGWl95Aw>jvq#%q_ixr!c|y~yG&MU&y>;b-_KzV4CY2um?;x>;i!bhr z4Su@*dlJ}Ohtw-2Fb>w`26cboW^a)hnE<}TjTczkpi7MPm#S1#D#}uluw5j@w#6*b z0+U77VmO>olavjsv}Q_)-FS_8Af3F&BrxQ2v;&ela_wYMTJQxWo=1wsV6j3KWDkDeyh>fIMAebu5~8p)p; z{ftG;sgSbP^#&O<<7OQ?18o(1B5h#7X1pLx&T-Oc>&(MNh;SB#5w4u7LJS_H^;>eX zYCedRGFUGXIdAKL)RP*CANJ9k%UMqY#9jgaOMY<^=w7MY_&n-J|LI4%O2hRYqit?%5fL&D| z<`BXEX6*^t!F9bGIpwz9SEREwU)_P~*NZrK4K_-2L`WXZ15rO_MCSBks>@TQUFCs; zn(I4Q={jX#b~m^KJ8$q}eYeDG&3Q=ArYp2pmS3cAM?zr%iZos2hv~Fr=_3MQf zcsX3qVpiJd(%T~AgO`bMzFpre#%^)a8fyUsewtT*KK+Q{0&VG86R!JWWUQecHMO&y z`W#$r^#$^p^zB{W?W(4;h?OB}nrVa0!Rn7)4C+tjS7OYjhdM9y)pS>!=Q&&=fOQ#`76WnB3LIXl3Ffi19gWB2M3VZ%Ir%JO7P{)& zP{o0}fjfeCS{jAa-)IY4n8~e{v0X_qrGe@DY#?hUwmX(Fww2d%*BIaCQ$-8PsjVnt zGo<6Qq4fAZaHKHun$J7=dTJepP;yV(oan7YCTtd?p62K-FfFS0{+xg9d;9eckL0wD zzOLH6nU3laIeOqV0zWBZol3qCogcZ9h~Fs`rV)5Y^iSdrl4{k!$v#GT1>m(pI=mV+ z)`|ceG-`eywND&#bZ0D-(>rvk!d{&J*b_PvX_j~O@j3?fkLpAs({ZSNrzP&YkKE&) z9H-oyaL@mgWXRU8we#h-4B;U*q^on>x$%Hw+=V}P)9r!$R~pTGzw)!g#!eKE2*TK| z-(INtNu{l$NnGvgHp>&b-+SC?&}@IRjdSg#*6~k zur>n&xq09hNEoYTa^Pt$y^x29S9W`HGF?-BYXV=6cWWD6 zwfX0dde6>-aa%RrtG;2`C<>r|2M!Dfo<18fiTj(*5mL1qJU~Kx1TXU{cedzM8Q%U| z5;IFnNiXM~taA9f^T>Jq;An<;9hEd^?uA-`06haH_Rf~Iw(>{VUhL@H)ZvtWYASrE z)Y6OZ&HD3g)b~**-6Uk_L6Ct{?#`#Ta<^3v%_o|V_Jl$^Qi0D&-FW+_fw>Ix+ronv zZ!SFL+hr=1+MM(AqMRIX|021wLX#ScwZN@bZqA|D)*Q>%RWYy4=Mv>px*r^Zd}5cz z*pKWjUdm>?;*$J8`*a;o3Lf-oL;;}+^9u}BhWCNEhgmePqgDJAHxi-68^$k_ zd)FBh+c%&ppzpan(2EtFSc}35mzGtMGW(+YOfEj1z9l`JpXdd~y&}j4p&hpX?bqE( zuFelZRqv)$$l>cOX$fgtH~p8NEu@`d<3do(SCGF%a$-^nKfa!tS$njSh!f(8RgF!OXau{TNyjc6K z?;a(dlanOd0S?1r?c1lpFBdk$v#Q;Es|AI$KP=V}<;!YIMmC>h&D53r*w{M+&*O9x zo|`KvRk}YDmcZjUG;$+@9tL8x-QJ%(Y=>_^Kemt}qP&-uuVo0FeKJ;k#mrQPoEJRO z-9*Qpj5b)J6=m&24ewl|`N%WhbTnvfa=Kzk?FOCqb#Vi2%pMoCOxpTUc1O04_VmU7 z>`K=JpNGlE;Y>p=R0eIRS&X_1gFL_oqOzRrzt(e~IpOYG@6>oLN)(iND}|ZV2JcKh z@!dSd;tt^K*;>}tfHw5O47R;yx_XOucUDO-58E3 zidDxpdg{^I(3+rY)jdLq2~6UvVww?S6G>L$dYAWBlulHNwMbx(%3zdvYaHI^cU01| z8XS3xAUU!geDUpPw4aFF^nI>fdSbB8j?Y{UXo?J2%qhcnebb%G@k&~b$D(8&b>;ni zdiSSVd{rKQr$B#YpW-x5II~d5Ddon-qi>=;Nemrs%K=|qdbc1s;t6hiW?E>-xPU2)Gx5h4ZrvhQ8%WKgFmvfwNsX{7~}sIPvf?UKQ6PFB4lsq zEP=ep6HC0%n#fb>`Mm_LC%TGV6PewKjS)nRj;kD84I{S#|IwtNG|$6A)1W*BL1_WH zDk)Trnpz(Chv6g%Pxp`JOKZPKT%H;2AC(~`5154Gy}WkFiO{D+zptF`KUCs+7(u?` zJoQ;wZJT!)ei`GrLiKYekwX9!A*WDV^Jq?gqIE~Q^>h-SWjocz4g@K+QK)fZqr>oN zciS$PxGN_!*(OFAX_kq?Jn!pHcrny0#AImn6gKy|rEycg&p9OBWOOWnpQ5i z!RwVD*GWZ*6pi(VfEbz*_NWPAk4yBa@6A~ACYBgF-2Or5sMfeodLZe%eU=*Z(M}+| z!ReMY1mN`ja5kyOn9otyzmx@ME=@D^CAw|i9;odVG*5F9E!qwJb~0w4^U;9nl&*sS$Y-f zZ>qWh@dBtxRVSaw{q~VG;pa38H5n~jAn@89hM zA}~}z&^RX~FWkGg+CMYMQ1>~NTIS5Vh>b|8mQ3uK@BSSf7JNS|(9z&E6mk)7VCcwb|Tb z=y2ac@6H_*@@mCbIH}Xp%r0Pm=l-{8sQfU@7JJT-qp(bJIotaDRg!VRxRIQ?KPoiG ztm0a(JnX(cC)iQ*+)__U+zZi$@QX;7B~1ANLxo^>h4imZ5SBRL|OOkNAy!RN2ed5FTArKy}v%a zuzHJb%ltX5lR4Pro8z(YTVbV$9c-M-FJv!zjXw{rN`EQk7D0c#Y^HNJ2ea$`0; zG#$BE9oHg6rzt=YDX)9I1VC-yv}#zEdD)tm%G47$n|Ff|xjDCap0bSm=mZnA0sf?- z|DGU|K>J=*v13kUuieT;%paN!WU9X~7>Zo~t>4y>AzJHjS~x%bHu6v&R@X2o$;#+m`5I^ur+gt;CME z+aewc4}tYx_-?9~NQ*sRX3TN3ip#SU!g6MQ3nX& ze?MO79%C!2R|@ez7>}N`8drP1V0u6BkPL|(Gw#xBy!*KzGl98ITAoe(m#Myl@AnXo zGnG@G&6W19!x5_1N$K^e(rAX!IvDjeq1IN2ezg3_Q_k6Y=VyEvz@9Al60B76j;ou#0 zz9S+~OQdvO>2N)zyTk5ORRkQ@now}@+p@Z@MfC0heoe15XY?SZLUZ|I5vRap7*I$>bzvVcB6 zlKvl!ZujIIC}fFPg$VOL5KBNnYKM^4ED!5XaXLVwDX&aair3>8S-kOOLu`>>C5^O% z$M1eGzWi$tqfcH@!Z9oLTHtRY-NuZ7GRTh)XGd-gIA3zODUAm_$6%o)t)ylM+zyTX z>LGeNnO4{A)A`>-s@5)6V-U7g4?h!GYvR7Q+ivWGQ~YFY4#f^){IaTUtHlICLfV9! ztL28*+{f>6|DbW1+npL*zyL@E1c|MQ07BS0TJza*uNVS;^|9i`d+(25n8QuozQg2C zM2_k(;=s*rFXMRbv<;6n_ro*>wb`C`u-RaGSXv$a(h~PInMdc#?2ScLP+(CI@P?9m z7Qa?XpGPD0x#3thvxsveJXZJQBlC*7()$p zB1arn@i&POTINTvZzY3b7Cx8vI#%HCH5ksBMe9Avq)WAU7~jCN$a2xNpWGXgMaC%3 zHQ?=L#uWQ;rZGRBpa-Aka!CG-b$0mf|BUx(X>fAe#{=_G_<2XWXBJ367dWGGDBfG% z{&!8K6g=P66kj6^kmjj(DJ_j;^1X~wWgB4arp?ox{F@j0vZX1~kXN63@58;!%+q(m zN*XcpJ*yEvAi>qki>rSw%`)a`$gY-+WHNpxALmRaF8PyAlRZ(VGoH*+LONfn88U;- zt$tM1Xq3%dD?Jfnd2o2ZMZshGSD=SOGMzb1pxYL<8UYQv2|7Zim%Let>lJlN_CD3* zx~+<5iD$z&hqsnbD~jA5GyNSh7`OG)dI`#&1OYogfc!>>g7eA5L}@=r_h<9H)@!E> zW_#J2BJ4NoIX*G{qrtdL-Ek9kl#hw))UT%;gbv`H7m3h}(1D1a=C(wmZz_HEU&^mu z9;e;sLg>oEpn}y9#7fvwkmdN?7>~rS<_k3LSIanvL9oYP9~%=h&sT;6ax{Sb=%r|- zfVaPj<2=@dRssGx(H~U#?w1Gnzvz;*a^b^h7)vEue&r(#k5}Pb_WAP!21gdoi{U25 zm8*@So8!=vkA`JKHwlJbTRf2ucCTWkerlvnDMqB>}ZA~z>hx9$x!dMSljRfE`4^ zvx3+$L*$>G+alMaXhVH`R*Q{9BL)urYP4od4=;zrCg}mRP-}$v<)A9$)`lk0f6e)l zPuiTpQ@4tXXI3!bWA(6`A!!AFp+|SGW1fi>*>?;1DCmQ|QjzJMDO@}at|&vpffP4u zn+D@TqfC#6gaA6sOY#PyXa#}YVBUx+gErUCK{)#qr#j60j;CI^;&)k2L3#U#+O6Nj z&!;2SU(A@}v_tk@owrMpo6q}C4_wdpceyhdW{AO}vKH78v2NQ1%NsbJt`0>Z7A1yP z&mPha%*0rJGqt@&t_|y2rRb50@fwezjFVgwxjs#2Sj?Hi7u>q#h5Xo0wVAsU9=XLp zX986yuI%3iLTNnw)XmDQ5{hy3@ zHI0NWPD`??*<{Y1h*CRwAz}qB)+DjAq~Z^*UlTl3iVS#~XiOqcjPovsS*rc%fP+Ju zEx#cfDt$Y|Wm}wj)e?&Ps-KBYn0*u^8k;H_Rr{zPM`zxmYs%&VY{_E87svZBIE}?1 zSuc!Jy@yV53i?E*d|vtbyEXgBZ23WMSHv(E3M{iZhK!wtgC}e%XBpUb!zPuNrVjSw zw!a@mfz_l1Y)&REPeN{1$8S`s+5H*sy??vLm`9IKn|6K5L8CKpQyKT0s*!Sk-L?hv zL?9efHE(IKa%FZs#24(kZE<%oK1KD8e)DAhM!%X=nI~amz9nDdHHyEx`Q~uNFEpz) zOeMfY{j`4w`(@Obz+@+!b(>uR2Jin>&KJe4p{-+CWHR0N@j&D>uOp(-TK&7gVP zuGKQqXAcv)F_laJMUz?n63aUD{aQclc?(ppj!xl$iRno3|Z=m#Ql$ z9XyctdXH*tf4lxkzpcIjOYRxUGs_bA@F#LK%h3k^EZ*R#Do_x&~wP7{g$}$L`>1V92=!5 zq6QCuwH;Z1sN>bhju2PPjCvSe(N8a!)X!;ig;n6_!UmPra*K@a+J$3!z;>iDV|?(6 zm(g;d(47JXqn^3E(*wyFEGuG(BBeWpoBgPdy_Xmj%X$G7fF z5`co}aepABLEp*MJ18>fTgE<+?^d`wNIcjQ_D@x5w@kk807%B;I#U|d2OhVHpw)zO_+wpa%6$zxXSW=UZ>wnMr? zT9g9r<_vaXa(~zJb*r{rABI@7qW`%(N4S!zk=W2;{v4eCE;i`l)Tm&6cW2@0VAA7f zQb?TP26o=BwS$VhrE}pf-PDq%A$pete+q(!Mr9DIg0`;a|5{1+cVfUW}u+=yb*S1= zk8>1s`VK6N8d(p6ncrDVsjR>6EA%+;qIh6o;R^5u!jP z7ytK#*B*S8Z^n#g)qCqbKHPf8tu{&3-5oq91Z~BIu5FHnMr5rmr;eCIL>qSHceYuX zO5`H}$pj6j(+Mw(F5XeLcazD)&5V9@@QZSuSt=|~)+BH44?!CA2St+nML4r(AMDfw z;jje$*-9wf;TrxL*q$mbwY>O`<}&;dn|VAt_n+4D?&T9nb%i(Ao*yt*;uq9jraxhEIwBi@EIw#kH~yUro|r0ett3Ei7-AIQ}E zn(TRMRWitf2k({H2*UCPZPuLYM+S0|-jJ*5dah|smk{#pX*>vvdjWF<&`M>|DBaZnyhaykFG$62y~ z1Qm*$4RnJ*uhDbQmiJpO@`*f%{17Zt5bd<%P@(lEvB+9V!suRD=!QAE5mz!{H;5l! zkUBt}Tv>CLPU^YCA8(lcL7I-wz+gICYF6w3gg9@*nF~K2Y(8phX*>Lw_SATDt4ZLq z$DF}~2Ej8V{s8bU|Kixq`raUB&6MO{AF(}UHe^yErCsS%zTIc9E^KG&hyN(1-F|^e zGxrn6g8tSU{G*vOr)-%(iMo^{*txEKu=1`Ub;D7tt`zxo=lQ{v;03$?u5Bt{QlEBgv7HJ*H9NE^@^mGoF5zLTw8QTj{f5fm8y%oF5;sB? zm6Nor@WFPtgYRB~nDrpXz1dl69!2Ko#ME55{12%z0^x=yN>ey%%6g}L%m8I$RIY@! z@r1?cwSX30 zch#?pq%_}O_0mrl-)_bV6L$)S3qwydlQXU|uZGbzlU5WCNS*W3(u41KzdX2|NPCec z`|vj@8?drH;fWFhZJ{z}`!D=prt^Ps&)|;8A-B?diDg95u-)iBzW`;@cHDoXJuC|~zZdTx|BWc&bPfhBlher+)U3N_wb z$1@2OD6FT20^_0)RWVp}*4H0Y3v~4x4Ho^lNonnMJJFP<$BkMKixOE!2U0FY$<9Kb zY@*M$Q{i$1>!<2DChypqh93MO1v4M9DBv*YgNiW)zS~;C^$oQAepB!1!WrHMyDlO| z+s+8B-0j}2%`bX`7cvL8@x>c%4^t{ zhK0H}er(Aw5TlO^F>ViA;W@msQ|+xxr6yFsTp2O<6vbJRfvx0f-@Dj)L=pjcE(eFy zN`};MF_Pfd`&6^~CoSfv0D&ua?(8;PO(&ZmQQ-pZ>=6f#P*~4ZmfSl7I`lJ|`6707 z3)SKJoq1CI2u`Amf<%Z{;)U9h)PzWp3h9TP;|$7=BjbY4D-I?TQYgU1{Z|7Z&btxC zNIzp45wB^>le#!o6`=@dnFm$iqqZsRA`XzSb1dh=8)gyy1??A?k^e~PAere z%mi#*R#4R2!X@Bzb(lluN0P^RJKujvBY?4uonz0=Io}q?`n&ahG~P7QKCk?EA$gO^ z@!h<^zfaQK&9I)OOnbkN?r!=l3Jc#Lze>Jrm&+>hpg7{?g_pD6=}}psfJ{*KNyh=w z*(?W$1WyTe&OuCfZ`Yb_P8fN-Y+gRy%(vK;X7hRQs|&%b?cP?t`+Lt}T3Aqc zXRjh7`H5Ae+ogJ`i{2{!8_=5rRUC&Xo~gM$+D*e*&>dlY25LjdjlGDmnL!OUI#oS# zzIY(I5{v~USUzj%*LT7)bljXD5KV7NyQsugy7a%jgEwWOy8q<>n}KXv)eaB?<jbdeeAwqv|MfdFSlz{ZPM^MOq$ zuRIvQaZm)PSRppW8goK!o+xo}L~pB5dq27vWNqN<_PBL#$9mPUBf=>f4L6FZSshEKq`}FdoSdi70ojbb z=;8&~yeaF61r$A37YV?v1UV1ja=vTl@=drrbQN}reX7c&d|SO|iAJfvb8-@zCy6~Z zGp4=w_DX&VO~O`i5~80_lmQr9KILpb=@gN>b?vrr!IIiVSCJb=WV;eW&!sZ~(UPs8DRg$~D~K(CY26=4w7i3{~<^(wDZtSV`q&jTu+iJX#9VtYuhqXXEY zbEHRG(a)FpI~O-gBMOwOmD2@+{TW>#jP6*DfN`&J^im++x>qp<;Fo@8)tYMh#p%wo zm*rnv1PIqQ7+pK`<$)d2l!G>_{<}7I^{#VP7hs=r^OQcFcOOK^`Yt@di%VJXx1k`f zM()dmOV>FNx$V+Lxj_LFnCQLpf!%@2Z^wJ>UeW%H7lAjUI`M6;e-5YHS<2J8^s>Ac z40#9KxX()vqVnkAap^&XXvD~bXPhm(frTfSzV zr)OxMLzzKc*aK*KpeW4;`9r2lCxYMzOdiVX%)EJXX?kF4Lc9DiU5O^ZY#tbt!jBoOHi=Q}L&Ms21t`%z)T=uTqS}!x4wk z(PHJWx_JMTclp^$hKwOcfH`(e{Fd+4<6V`FJP7&w#%ZKjNBSF&m(oA?EsUpgbJ%i8 z6gNcM5pMxFRIEeB4EbHZ%_{W-f+|Kaid;cERd?<@}+7x^l#sO5!f1AC>cbk=?oB z^nGz0*o(fjrZ04tRj^<6#m}%a0nx~sW3HYorUP8g2+{{$(E7ERCNM12c|{b@c_0K* z01}<=Jl=lWQ?7W8t7!*%#Ilk0<~$d3AAPbM7m)_|+V_u!wn)z1wWP!bg4Qy-UF5); zS9rWt1M1n9ZpMU&ouADGZ_j2Iz@?97rdVEEGidNH|sw21al zmKYJR@IyB*d$B{n4Qo61VSH=F`*!R02wyVO^!H15Y98cQzQ1HNsMr1;LC*Arx5}QE zxbf$-SEpjnP5HP-Id33Z2-_KFWlWt@5}Sm#ZbD7WXI#v3&Qt)-tfQlm)>26 zEool&;yDbX{44il=3HW-iSdwX{Q5@|30<+?tKm7_n(ro!Blc>HrT6|#{U7~X|EqG@ z{WwFdU7-KLz29AY_dks9|EX!3g;{BAjLCNP`zJUA_NO47b;Zfv${zHv&Lm!{HuGdI zu4Vm2=GSKe#gyx3u^p$|x>;@_R&m=DU^@ZV=~b*~0aM2NuXOt#lqSvo_wXQWZ$($& zkdb=Ce}clDV#>qwe>CI&RZpQ$^L{Aj5&zQ;Qjh){L3QcM+7Wgc^$^F?uv-+^)*gnu z5YrS9^*<-i(vAM_Q+9jED$08#!qP%ls=gtmZnXCAIgN4;lwfye2{0$yr`Zu!Y1S6P zt70$1=7`im$gJ566W+=c8c(=dV`&rX;9=didzJq`sVwWL&$Wj+R^f?=u-oenrmyPpuWcv%%0J`;)xn1T(JYcGOeW~; z_R`k#-r5Mxs_bUoV+)_O32oFS`n%86lK1JoIp3xzx-HmIS<`-8IbiNM&;>QdJgdDY z^%u`QLy^|p{qyNpzVE$%?yVa~VhmnSnyDwA{22H|Nx+)Cyu`XQ(JG0=lQrS_i{ zIp>46=2?^2OD8{I)vy&<&4HE5s(i5woIzDIdrRVBVF{&M=^LZT%1Y9p}GK3(8SH15DWoz~r5-=A<3Lidzr9fY>+j z-gB6Vu!AG!z7(v@X@B<8h_mJXb737%hLtrXzTDR@Gr#msMKSmw?hkc35p?O58P&q> zQ@9X=-EPk}<=riuYf|{5+;DrTg~~GBXPA{ZO}YqevHpvp z2p`3)|BJl$j%spS`$ePZ!V1d;MQbLdP5+D#Dg(NR`#L3#ATCYPbXz?ke)$jjak3j~aO_enl^KgUj$yy5#umx~iNi+jX z!aEuTH3Toxd)q0*>)7s9#67rbuu6_?a9h)Z?u+|Ve!vSR7w7}ZGS4?4M9LxDRHDX{ z+alnMp!DSv-azO41PVKCy@YJ#@dfqgj`~TUt}6m{O%MMDlzUmA+=jC6U}!?1sud{) z=YVdv{?zSj3D1DG5Cm^piP01WdVmtF?*FinJ1sr1@@L((`%`wbo}p2Rpm zgjjvxlW)*&+Uwx#-J#sObw!xp=Pb96**`D&B}*sV4h{U;A}T3{xY~1rlOCDrHlP@X7vAsnWemV zQYF;NrBBfzVlgdK@_g%qXz6n*df^`7Gbn?q_Usn-BFmUF(Smcaw zJ`)1V0WC3p#97*#OT{JT5IAfJ>9-)>yc?gN?SSX6kc)Esl$g0NP^w)lqL?V>5~ioC z?D8r?ur~Cp6@LO&fTj4uUse%^v$^Wjmq-B}g7{fb8H@tPAb{-o5o%EIYxy*+1Ll<* zDb07*1Mi^wF=bxFDwh7TyhJeEw~5Q<4^c-2Py)E%~eD-7r3U?_J3!$+6vfL7yOjoSg=B-Ez8o)KI>4?%_rg`x$hzThWx(!XjOkeragNbiZ~>oO6}P$YV;IIs0Z^ z+u`jBVZEVdVJ9D*YW5B*Pa9pwl8qZ0OZPC%fB7!z683tn?$Jwry(`PEQ(&LbY@*E; zEtAn~xV^(|oy&5r1_Pcy3wha{xcthrS7U9-`<1EZI-ziDRwBA2r~mzR*O~5}%~{Sa z(=}gE`B_!)j-GSQex^3(z%sQ%RuMDw72H)&vX&W#crp?YKe}}lan@~u_e&vaiQ2e| zuy%pET8as50}ILK3KN^lJmiu#Uhr67CV#ZQ2_f9Ol?*qgg0?4L2Utk5c$E7@1)2y! zt@KdPOQIIC{4q;Yu&rMN1&#wEyMvaL@Wo?8vs(lB(FWi`@D&R07YRFfC%8vu=I1ly zNhy*6x1p>E4%`PCgzWr4-;C^G!Q51lObZm>fkvI*?L=T-mt95VodWGhc9yG%civMd zx;%rra@b`R!H?&%cyAM9RuS{ByP+PpRm3up2z|a+2o0Sjz;&RLJ3Af+KcOY9BFZvB z_Ga>Z?J9!lL8mevhuEzmDz)!{!d3e!qN@U2c)Z5H2lUpgg}BmqxDZQU5zYyR8AQcZ z#D@SRxcY`lhUyzm698BKxgZvAJ@?+o+&U^#2g!G&k-;NDFe6m~JQDZ}(4Z9rpy3g& zD0sVsDEDX_{AsC;8|AbM#ZZ5{is(23E$0)VZ<=l>R^(|k9~{WUPx$+CsLRA`=<}^l zep0?~L^-3cz(n;+1tge+=<<)rD~Hn{?im)Hb6Q6kXyk#9fJ{?l8X8dPccR_mL=3S1 zXMkPoY9amYA=H2MP(GkZ$}om|@E-&S_}gmy{)g2p)7hIuaWtG_!{E>{A>Os0a(rW|5sM?52F2V(>-SQotS6YwSKX`|7xg#GyEcgWJ1)c!+?jn><8D znpLzf9kV=+3|_;anx=g9;1==e9%NsBU0gWvv=qguFvvM-;`W^@#}Dq=$uB56ilhK24wI(En^pVqezwS+oZ=}H(lz@eTkSJ$!ACZ0bepZE!Q}j$ zJ3W*)YJH0D=Mq#RIFEQMVmRN1w#A84j{Ug@zdSiQ+BPiu(m*Qb2lQLkZ+PzEJ0;|? zLabT`9~xVnd#F|4N6ClYD7}-kmGEskLNnt`k1DksgA%fq@$hcqR)C^6N3SBjod-T3 z2j;_hzyY;iM1h;$>;S_4p;!pa&36M%%_>40OK0CNQ{#^wMFYrl>^W)`VX=zP`s)#$ zpN{}HW$py}GLs04L9jpYbTytBZrvU72z+l71ed~^T)s8%UnwC_58Nt{<-$HV?h0x` zoWGT_gBN&g1_L)~nL(oj0E8%bKTv8vMV|UVU_$v_1gwIUL@`hIt?@2UxH(?u? zyC^tz=bKjCDuO5_mUEx-y_X0Qi zHq`!5mIr3`oL7mWP(B?8}NAs9M~3^v>TT;gs#x6Y9WKk14O#VZq?&r8a}V2Jhv#W)XhQn9RPPCEy|eHD^~aa2bxZQV-axw*~lie!?dJ z8L-4?^+p3u>Q5H=D^!8T#q(oOD$i?)YQW?D{r3WhflcMB=22ikm2U$$cz32is5T17 zrxnK!;8h5iE||JM)I%ZvP!dQ~mjS2t@1rk?3P@7>=d8c|Bnk94lCXHkO(bB(4uC`6 z{ahi6_|G4!Q+Vr{)TQ2faPc(&H9zGJ0&)kKvh){Ig5cOaKbeC0zcEF=3KFaj%zy`U zW`R!qDH_TG(E#Iik-@m=|7BtjMFkob36mEl+I^wLzl{!%Ru^HZ7hqH{>q%!o%D=cM z0Ch+`xE4nLCDq#h&@KxHf#?Ay#X>Uxsr)M^Yuo>`pHH;pts+`bOz&Z8U8cyzfVw+r zAHSP-Z)8s(&HK%}__y9R6_)|{8{#AJ!Z>%CTlE?y6Ho2X%gZIJ3V)J({w=lf) zF)q*|@`YoTnQ8CR((BRPrwrD8QizCow=T5q5|4X?s+k;Q(~I#qUSS}8A@*tLGsfvj zg%$$#&1s!TR>gfw2XLDG_MtP!R1E84M>6zM!s~b5ygg`U6-6n3^#Tcqz2Cm5_!9O= zMuqRaNfm|ZixB3f0Z92qrcd*+vn?Q@_Ot7SHsAtNdCyi6J3xwvxZ3gW!o5x)1~NlX z!fw&|Y5fi$lS!4_F9!5YyO^rq$xAq(l$ox}p{oe&d$e1}iW3F3&`EQ(x8WxVO+6M} z=?7W2c~~grg2g2c^_>r!4IWdK)!)Q;sh zR4so5mJ>Yi068Lvw|5GX;s23F2Z3v^FdIl7RHF%2Ir~?#9gM?#0;A~21p`0eO3#8o znT2Pk3SRyW!gFhRhX3!4{(N0fzt9|UKB2r*3_=-j4{BwD*mM=~6t(h$Datb)bb&nH zE6@w4R}oc>MLKZCmo7Oz{cY`ROT!O4RyBIr-ucr}R{xsUqIVki3I9w#>I~MJ>T6=@ z1L~(jN^q2`f_&fHb3PbXOdh$Cv5M$#z(aE6K@ftz%%tn^by0IQpO*SuG!JY3XubV2 zU-q}`S1w&AiG|$6FW*NW>jU8-aRK}*GL7edWgcVBv?r+E;2%w*dvHc|7SXcb5GUlN@bXL^dUYVj2y%><#|Bwd?2_GGGB_kn~c{E7=OyQP0xf-oeOu;P8!E52|7RxfwPT!kO%tW5B8i@4paDz;IC;TT2#W&PB~ zzJcTd5-OdmO;Vd#?&y<9Q(yFU_g_k@`DPGVZ#b*@tdL<&bTPo!v63?)mCKLZ@Cws? zQ~Htk*S(+a4HYIC--NCMgV>=2@M>!<$72<7d~R8g&l!=Lo#9bzAy+jKK3B1?Glrk| z5~e$OEf{eghM@P;ugP0QA4goqE4g9>Rxu|C*h6D3uM%9mNvMIwo^^4hKlz#3sfBEQ z;4a2?F6+ZesM%Vxk{$aZADz~#yO;Ul>xud+S9wa?l)cQRj;`e!fKmLR0Q6CBhY8bK z%W}?DV5|=i8n8-sIpa>L=#s)^_pWB6t;wbNebOiF=VL?}85i-Ih0{?dDBG(ue+$b3 zq;Rw4gMWm1k({kv)Ey*bL4^)$tF0-rOH-qO#>!!4e;Jl{?eTULJN;fa{lT#%_w+jb z6l}r6`xjfk0T$BG^#6phla)S(AgOf_QlQ5W_OCRKAa&@L1NF=zXIq7j=BfdY+?XSM z-QKVKQR^f7jTJ0nGDFkTe!FA4*Ii_|=67@}SQxPgkjJQg!H}~AHkF}bpd;uZ%w^}6 zmU@r3Sl^cy*v(%$SZ$m8gN(>YJs`6RB=>F#2YvSxSxOW_{N{y4k);SYZ(ms&Yn+u;>M zJyOCxJ;srOZ;D8^#RqKg1+wOZYs3yQr2z6Cc~pNxOvu)$Y@F6|^{T-^3nNe8(x8mS z(b1HoKt`w0!Cev&!M^&R*VF?6>ncPqiK7?~Ky~QlAQ@nY6XNcE(3HSwWYaUC7^NC` zg1sjOw$?x@m)Tbw`{6F?z%xTX3~ehPX%z8@nWf1nj zf>0l~9~EK%pWC%E$?cw=s?90qrs`~?D0xpo0%!h>{E0kVqrHkSMss6s(8tucAWm6O z@ts^nr0ejz3oGKBWs`-=_RuW;Y0Aq53m4e-K~koCQME!_2W*jn>gi&G^ScLtbDmSn z#TQk+oyh$-GHjS0(7o=)+=T4!$BwRnb+S7omPCQY7#1z7J7ZwsWblVuI8`EF@?)XN zJk{%uwCHVlg@r!`dd$+dS!aez6fUTE1x`-g=-DKQ2M|f7fE{%z?}0RHp?$(3wRDG&^ti-3+0I4rcxDq?9DD0W42S!0y^N$)t2 z4SpUBDelWL*b|sSBZRH>Nx2jtvALqF_x!0*Vn$%(!HD2~^BM`=&1PaBRo8J@CN#%0 zS~m%5FKfo-gtCvCBQJ)f-a32BWYaX*Td@7GjPS<&4M;-04mmO^0!-qPI9Cw{r+5CF* z8iBFNTt#qfAe86}YO_v}2S(3LtYvnfw4~6v4)1FtUj!pDBe}#^_RF=Jif4-7!X~y^ z{vJ0!zq@)Y9|>gO5b8}W@389-p3%fvFJ3FP+^bm?H<&lmq{ZS6;Q#n+{itnt5o^2@ zalNcZ@=I{WE}MnC?PqSEMWVsOzqYPyN#s~Vt)-lUAR4F(D&`*;QUJmq@@D)AY z5MKts9&^HacA@=*lPBxg%svz8-S+-7cQUQedw2@RBN-XchKMV~bH7l{0jily!B%@t%f-8&}XooN3S9;yF6oNgVGk?3MbiBE-=!{?^Dhgy`FItfK$v*4V9v>#gFAa5Db=EfPBTTT0nsPKGN`gs?0Ie zZf{dtmOj$gd7p^uqZ`(0Q9_t+Kcb@7%H7VB%Q(&rkT%LEb*5jvVAKuLe6#^aNgzzw z?yl7NWb!i&+<3Fj7xm`Ifjsw5YHr$XdA9dHJALg%4^HLNiY_!7^@Tnb-ur0=Y(>Hl zb<}}9bn`{UP!|m*MaT3yvV6STQ`h22NX_Wu<6~0`yH2Mc%*4w@ z)M!iYPfB(+?)l_`0WZH9!2jh2FVBFI17E@OBHanROLPG*&`W!C7{DqKJQyINIA@Uz zV#-oJmoc4E5df+=HpoU<*q2g|;;(m)24Do{bFecjQpF&}V@++8hJ9=6mH6um|NN?x z^wD6f6x<-Sf$hX=!^W9}A(Ag!!DmO4x6o1fO+8?PQ_oSLz@^J`;p>zKUW z{pN@lzgulEf-^xc1TM21Osee=e2>h$#HWM!AK0O;Wv2K9fn&^qI3K)Ul!GKjs#Obh zv5q=MyQ-_i-g;#fas4CI6~Xeq>0(*(YndT`|Fj*+jrB8}`iDLJTfF>VUV$rkr1K|6 zKFR|aSr9J&g^>yWf|0SIAX)|>890*fq`y$|ia6gEB;;Bv4t(K<`Nq3V^7NQXSD~1D zMT|)f4@#{hMAY(&F3|}X>|6!#z4LLHv4aZ^oIIvSgC>CyAlGNsWUA*V@~IzpZY9y< zE;IhlCvN5=XCKQO$|uH|Av3zY*wpIE`(|BhgVVw&2pkbx2pmhLIus$J-_}^+XQA_( z#2L&$xo1c!&DLb|PeCCaD1h^x-s6&Y zR3oJC{B8u~QUj`#2F4{^%K`YFuQQ-wp#TPY_MQ9Q55rD0;-Fxa3%(C%5NpyaGskw7uci*jn_Tt>{9ai~!X4`HZy_L!GH4DR( zY-roi@!RCVati4guT0CA_X@s++#feetUdBeV;xg^Mz4`#OUQTk_i&vh|B%SZ+-w^D z+R9~5bG}*0uITl`fj5kkjfxNV76U9g&EerIuq@%l4X}mgRYv&e9h}hS-qJodW`(p` zNO!R}KeOn-`<{4wF*9Xb`mvHSc&M(uSyf@jj;2Tb4brbv2(AH z^KnWO#taJQqb-d7=9Bq;YTrTBrD1Qae5-_<-doLa2e0u1OnX1ht%-B`QlVy6r?cI$ zK?(8l?t)nO4PSe4V6bqg1XJE&^H&zK=zevRW{Z!O3um1xot_xH z)-{u-U=u!vuj^^wa@G5N@ceYiHW5uA9vh%a2Xa_zwdi=;CqIjEzZ*8(#67p#`T|mp z*;||t!B_o7(;k9&j#ps{NsB&TMbrzA zP=TJQ82HB|%s2VOvRwk+Q_J;&=Vlj+)M|}8$62Z#ySls%v-~^y`XsDv^LI)+(F40) z$}tM`Bd_j!-eZ&qH0L~FX^+yPGl;Vdhg#v6&8vu2L|?QZE^wKrb6)y9XB#idLvJ+| zf@uBG*iK_6*7X}^Yi@Mw3{lC^aBPZYipLBW{URPsVn5I;HBLBm zLNt`nEL;x4_&QX0aYAVohF{d>sg+rKb2*{2$!W{xSx1rK0rMz-@3+pbF3$EnjO?(1 z&cH?f=SwfGu0J~`3y9uOVb4>UMzgQ!)M`HG)uW>LmJ9u;{iUvt9aj;rN>h;x50!Jh znl9qz?*5(4?kOXL9fgJN;+c5`xD>^U3MCgX8O4+n@D-fK3%=3I4 za%|&*4kzEaHQEdn;iXUgdehC1I^~$s=$taRTQT`$r{t4}nZP5HEfubIbDhLs>D~hW zw-@#w4?px_#h(Bcn+vgZ3>bgB>^-g4+8E(>&;nWNy?o2eS6gmszCj0AmSX6eB%wi= zz=Hp>i$2f{Qm{m8=rozFC(M{)i}F5IT=prPY_4IL9_Zm4U+FTIxVd$?r%(Hl)1EjF zmMGfMG0w)ttRnw&7v<71^MvI03tieNkVIHRvIIblKw3Av0qA!-#|fOT<4op`uS^V> zg;o)7siLvJQiu9kfG&Ixj|~b#+!pE_3-~#DF*IC`T}7DQrR~%L zA1uwfQ&(=+tRhU3X*a39CA64_^Ge<7bSkOne@E-wBn>)B=PIJ{D7JemxX^X*s}vP# z7|R6>#Fi<@yU^6!;{YB7`9stBE%hA)`Zc_@7G)MRvDsR?K-&CZZLL1&fSH2-C^ZGG zopq-j2&6 z2h9gCQY*B)iOlG9bvMGi$)I`GX881Ba6~r11^1BSN}z$N8k|$=TB7l6Y{F@7aIlss z;$d%OtuX1{g5G1`|Ge<4Se~wGa&mg&!`*pR_p|pKVg%TxfDCfJ>EHN8i%C7~m5Whk z$IG4i-P*jdmkT14hd!8wUxur14B$s-02LFnN8_z;bIBG2qDl%n~;m4;u_w!wc+K(ENh8m%a6>x#L!nO*Hai5AWG{xD{+~Y=ekMa%c!~3}2 zWVy4E+kBs+!V+{djBovtJ9&trD#h<4y{ED-^(gY%)P_)o3j|#F5-2m`+zo!13HUL6 z91!b+9&ttdw3+$v)6!typ8aQ6DO@#Kk6a${Fi1bTjNIQ;%D z_?aAiOVV)p;{%?lE9W{|-KPFt+8W`LIl}Ny&0hVlFX#DhjvmM{9{kei2|6sN(}3qM zluq;kWN-jABsxAoUj)I?Hu1|4-KIi^X8`0WO&Z=Q5!vvC2Y}<7b=OB3zgEXLU(T)B ziZyb12M;-p*j$J-)i#^2!`gG(qaGA_;va9$3Xc0`Dj2c*#Ix zlzFFwE0Rf}1DWudD38!ajnW;DugDMtsmnkl?>EzWxB=Bn-grZfBc2;|f^}Gu)D?3M z=bD5TgmLdF9w0UWg|H~+`hn6^TU#w<9x1bNRyKf)Cu;$2D~srFDfroZH$Lc;~_rt}^!2?#`H3q4gOmYp^(?n+_^koOf7z$Zk=M zqhq|Fkwj7}FLdXAor#~QaLDHq3cO3j3;M)!X$!lXl2y)dtv(i6TF|C5@^9?kmA?JN zljXc$*8thNL}wd6H?~yfbo#tZ`r6rPH6=|0H!dDhzrFWmx?E_|l;#`8&ZqGsFE^79 zeZCXsmkPA?vMAf2b@Bcre$0@eP|C%P7BW3C5!la4EFTT zzOFN*2agowE_E-2R5tDolS_`Pn?CvQNEL{RPjY&A8Spu93HM>Y3*b^cOt9p$&H<|h z@d8r2E3->9jq9OS#soW@zc~?KSvU_kk&l;1=H{vIRsuF|IE?SlaJd^&W!BgbTsj%y|u0g!pfWe-LKW2p-|^XXxE~LHfrC#dyu} z?S#OEzyvF9(dePxLCNR&E4QP|NTn{r>O_gBEw*{3fu+L5>hNBk<{?J2(-F5fk&Vwz zdrkP;q~>lww*lQqHeFnTZ7jC&I{a)M@u4VWA<7y%SKmiQGCd4OkHyFT(d(&KdkBZY zgnaGqEZHrm>Nh#ynZD58hS}@(axmRiX@~#C>q#Kku%osb!aH{@NORutwoc=NB&9nE z2iz@Jx-FW!_@NOk?omR-<8daLJMz_OkmJnrUF-F`W-KUC;nK$F(tA|Z{fm%s zv)-k~Up+1yJ!^a8F%TwYsG*$$&Sx@%o#N{&ybVWKCam%5{&GxL9y4XAj>!}yF1*nN zq3Tp0?!vcW*&hD$(oCDiLLFD_Low+?0aX(5-dU*tH7D{0PQxbXrt6>uP0R=6C8$?O zf*ek&Fz-MgY%9Ac32LWGBjPY!Ly*n9-3w_t7MdU@gm_iI1;~X39)@-4HkXHUGD1$G z8PdtyY&K;meO@bQKrlY#>XnIP9gkc=ay+~KtV#G@20O|mK+398-(_Z|Wp+N1}u-yP*{RWB1JFt0&m-fw8QPJ4_9D*`BdyrozmEt8@v23%1V*$oOHVlNU} zTj6@cOwIA6nw07orAo#~{GQtBi1@drNy z{e~6)&HaXgR90ITY(Zt-CQCu{v!Kh*rTmp<1vnPB(F$}Cm0#2P47z9f$3!_fsL$R5 zr^#mp+mx1k$FB^7TD6bDH))0;T;Dh<3LlW_0#S*$2HnEK?;zKk6AD$HN6k(%py7Rk zphZ0|oJv~s0qHIrYUn;6{F0Aa3>q;}%Fsysq~5+Oluc1RPu}&B#hmOl>+OFsW6`MJ zxg24(FL}L+#l6(0r+8rsr!F9VJtY8K?`tQ-n}(10nejr3;6owRNV<6d;GKCSRH>@5 zSjG()t!+92IkJ!s+-*@i+WEL!LGP%2i>`CiXRvp;1Q%@;p8lOXR4c&D37=c1#Y#2wG^j|~v%{=bBrmi^w8^b?r<0Y8Rh zTi-$oex|JGI!pjr%vA%FH61YhUuUMAT0iC%mpOlLp1Bk8)ltQ7hs0$$xwON!scM%) z*QTvN0VLMNbI=e9+1v~E0bH^Ohrh}n2N(QG@w>jfC!)2L*w>&M=rvN59IXP~^a-Om z)|$ABu3!eafs!R}t+_oPPoFXA34C_&Jz`t(g@VU9adA7(0JwOlVA2@ms-#7^I|3RP zR}r>3YWxvd(9c38Eqilr^RB>_gkyfLU&^Najw}_9&1U$O`&`qgblg-mQrY}gx8(Sv zjsnJ|Gm$UP9Y1^YvNqipZH%Zj(OKYfwnD0k@2M6CNQ-1q4UwSDg*aSxKF7PqB=mk# z%@8XDDg8Plrn>cmytl5MySm;}F2z_8eYEHin2m$G>HTF7#`nHHe3l1uf!4%}rxi>l zwK)3LNB45P9@thoi$w+JdFnREw-$!B-3qr1GujS>s_gj9Q%mAdB}(IJzJ|jOjMtnL zWk!$Qb1MTCYB(~<;4Zq27uo6tNyRB)bR Ila@U+gI{tR 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 D_@4#r literal 0 HcmV?d00001 diff --git a/docs/imgs/mixpage.jpg b/docs/imgs/mixpage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3930da2bd189fedd87a969ee0b5321c91d709cf0 GIT binary patch literal 82056 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 D@3G8S literal 0 HcmV?d00001 diff --git a/docs/imgs/webpage.jpg b/docs/imgs/webpage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f571f079277a6815fb4afe120cc58e6fb26c76b GIT binary patch literal 63909 zcmc$`1yo(lk|=y|4ek)!-QC?a$U%cU1b33)PJ$)42ZFl=2?Po5?(XiIcYu6$XYQ;! zZ@qv0U7J3&tE;Q4tGlXu8^5N0EdfwuC1oT5U|?W?*B}7=ngxgfV4M?gSK&PYW}N>4^WK+Q!%&&C~#;n7*HYZV*x1rSp)!pfrE;F%>WP~zyRPV5GWwZIaw_r<8LgF=*weD+dL)Y z!cSuVIq-Yky%z@61w(Qvn&q@!*Qr$7OpN!z@4un$U;SLL5GXs0wV;tn9rxG(K!zZ( z7RG<<5k=w)tE}Shx4UbK7IegQ+rPG!X+Cbq%Q)4K?on{tZd}Z&@2QP0)XpA!Vh0Qo ziT%W&O^8!nP{EFqSV#2`*A0V87>6p25By3UIt1rcLVt`rvb#C-DE#jYA*YMOjbnEQ z$cP)5z;gvkRHsv05K}yHv2_id&<YXN4t}WXtXC z`5Z|cNgSORBq1cFv5}NIF!v4+9b-cJ2$rUlS zA~Tp_{u;o;k1(mpuhEi$Ti={jzj-P!uQu4RYeKILVnr6RYKm&~2bNxLTrwv90@znJ zAguUZWi(SWg*_qPl4P%SD-L5I*X4#kp8UX_ZU77CybM2nwh5A$!GDe;vvWK!dB(oOCD z(t{LoSrZL$N(_jGcntW7W@uE zA^3feDTrh??x_SzxwiSI-Cfo+20xj8d{aX|aQ0w4db+(?JXTv2oisQ>Ke9vZ%?=gi zxrskTa0BLV^wjxPbA0n)GkZOA^~tF!><;84aQ*TcPqS+3Y8DHo+~*#z*0Z=am^I=2 zCedt<20O_HhJj^t3|b&wyt`#&oRqKNIH4FO^mzx;3EKUJP*yOu|3=YA-+siS;%K+0 zktOuuxKP*SgP&p5H%6TVO1VyIGLOz&%iiW+%-I~@Y(h>C7po-(05)TU*{Ym!&sL*tXqM9Rh!=!4Dh+rS2pX2A zN{vg2C)}qyrM+v?L&4%E6yIkM!7`taKq4 zuXrVv%s{Y1;IkvuVVa;Gm>%EG*XWk?bFyooDmeW$NRLOiiHXiR^^Hx}Og|&^uHrp0 zx5z!kOEM=S79ly^Hs+J!HBjWfXiI~;IZk3j% z)@CcmA*ZLf@@SXLt&<&N-(VPz$m`%ddqKnPuFswh8-yty!Fhy_C!1rrh`V$`BPHIW zBSoi5vi#%o0oklpkqsAo4y47VGjbIpm9(wW-!LsrL){(t9p&D*3lNK`NdPa$UO>CF zsUW9Iy18Y4#T~_J2h+wsepS>@wiSr56D2=S3>t)Ik0y%|?_*X01kzTZ; z>&taICK1Sywnjl8dJy+t;T<9^$Voz_Tb4~i`)97Rxxp^~kogvTO(4Rt3j3m9r(GPX zdh4V7M}xux0JI8>-VNY`aRJ`k-O~T!zp1*nWlD~-uDW+c&mcOtP znl;c&Z4stv)X(u?KA_Qr2|qo!(XO?NE?!l@KpQTbH9{jCaeT%PTB8PU6?IsC(oGc_ z=@;na>(J!s$&gM|XbGa|)(a2aXo1PnI45SyB(eWJla)_ob4#?x&QnR?z%~BYO#3HF zrVnr;uY=0G*R;Vcm~}i~Kgbek4!ahj7NU7MBDSP3DVzSWbtxgFU7tb*{K*ceW6^{) zD9;8?_@`Jte4~*T?^pVL1WT+-FgRV>j0MzHu5JOgGDG ziUV2oWVkE;Q|FX{y3)XGrPW|$f`Rr4D{!0gBrRu`OOAag+Y52kIQcaYb4KsY{;0^H z$39rv5bmYdK*hM7bHs(8?!~*OKwfCg)+8p93@UqMK)KJwmUoRGMWrB@5$6Ni97gi@ z3o+?FDy5a|f>^TeQxR}~Vb)qWuf8hFtBGNYCLy+_ z78tpuEWVLRCd~b32i2v4h3rL`WVa{1xDBrwPNVSO%BD_Xb-Hw>nWaZJYZN0qm8RY5O{2~Jnef~=*DriKSz5Pbn5 zR%8s}0B}0YbN7p%KEUHMZyzEiRV=IfEBsfvIs4{FT}WMS)D+Q&*4(a-K<{EjKi9qj z34-Pcv)0JG#JtU|Fb!KPO^^JI3Of2>+L@$QpovDFaYa)yDUC4k)7}8IwqxW}YU|Ky z+CcDLI#V=<>0lOx)fC(({49fQ*ent7qB&o8_#{vZY%!LIZ!M$0mOW?GV=UCzj-&uL zP`Rm9H)dk7NO3O6D(9GJ2yxA3Fmn(ku8>Iiq%O|PKu-KR8E^UWZbxQ<**rRfpn>6(i0|; z7HsE~h1;8_8`}eU0MA%OUdOL~m zl%gQGMu~bsdva{Vr`ck>CDbaFY8+3r%*FB!}3_Lfw8#Oyf&$}tAL|H9&H#=g5v;4^TWC-Nly&v5;C z1}1tHWEE;V(og}nQAwmw`;pI~}Z%2wJ{Jh#uikz=+E>gRwb z%Lc6%xqGpJaOIDg^N!B8i}oNxVE~i|O^hzI+pPIqzqfRg!TzC;@Vh5r|F8{+0!0Jb z@l2qP7vI%qj&Gc**u2ug#OjbJ2O+bAtGrX4F~0zWiTzXpW>p|>e9DZKa@gF* zyT`^;)k=I)jO~nnK3%ZhDp*rp zEjgY3~S*tMl%$JFnSJt8;* zZ7a_}2()62yah6s@FVdtAwDnM&nEzY=0fYj>ewcYY zI^p}xOEwdh+-c)VSDaPDDEh@Nd_;#bQ075DhWDQ+RWC&3_F>_%F{erH`IeO4jeY9% z4A3dAXQHPqvJ~fkpxq?d;o!HQ_5iigY;D~pINSHHkwDiq<@Bo8-(-0#5$BlF%DoOw zF&QjOGn=%3;Q`WM0KRircB*@Jnx z9#zdBH@b2>%C`w^Jf)HepH7-rhsskfD?0J%4gZnxjF-yE$**U;`$Ou#4AT=iB6c0$ zV_Xj3$7z8f70?XV# zFE;Mly5adVK7b1p>6N^E?`?}8*PE<$6Lf@gi*wx|_I%y<*dqK{wYK5JRNf@+^@Cr{ zI^Fd`S87+2<)GmQ+^bo_w|nly15^E%9+~IOZ%2=I<&alv*@tS=jR#{degXKVldc52 zu~nGYGaf}fCfJKIuB!_;VF0vXGb3aEa@jK(biajnbyK&jYRgV-i!>z(rE~&MpWUe3GVZ^6MO!;E zWPrg}PigC#-L(yh15HBtuzxfKkRo$LOw~QO>dl+aHrszmmdLZ)KSYcOQh2NUq029M zb+%1OZoP`zrG0bewSAiE!6*5lb6xW*AF0l~Y0~m!;?;~lW&LB<|4em2T=X*ggiX2N zE#zvak)!RBy%)^j%(I1fMdd?8m1t$^!^AY%xi<5;#PbZ}3Ivp~-bypK~+q{(g z@`*52Q0YgGM#FB@4~)N5{cm)2UpV_Vcj{Srsg)`>o~klYO{l3j9xEo9+Gjxq+W!$N z6SSI|pt%bAQ2b2{;J?ufVslurJuJMW-N1xM@WbQHjOWe7->RYE{&92dZ$tnQ=$;@8 z3IGfe3=A3y65{d3A*dJvbW;!#104zl6%CV^nT?%8n4E=GnS_)~MB+6x7U*6fEQk#Z z3jE$%h!L@lb*b0?|IyEjTUg(>P4s7hiJU?CSJI`WgGf^3q=VFz?Aa8aibJ1x=ts@X zRwQs@%!0Y7T7x%NdlX=yr{Pbimrhb%&tzNRjF=}9b9_b8Ag7>O{Z8fHoyi=1+sP-g z8Ny9Sb$!u9mttF4)iM{+|MptqyfXSl5=*;76OywChdHE&xv?UrP8=7pB$+pkuP+ZF zy&!|uh9gtK;{XTb! zuljc^W5;xc^B2O4d9EaEt6@YRQ<$K5_Y|@g^c7Un7X9Z)(!9C+-u@BE^~3isqskfU z$|a~ZDOmptKo4ph@L;Fy1}F*CxpE@-O*b z$M-@YA2lksP8X-9NwuzrP3n6Y?9>a79_4+H)`a|tf4~^Lpsh;r|0R4$F+D1-W#>nE z>-ovOomcE>VrcVSDo&qAV6;mpxo!ec>|{o_<`YA1uchN32#5bfQswIiJ00tUk@c#2TSgtZ zKapMH!qg&&vd7jueEDi|+CqRzX3$34@hGluL?@`*TJg8Q-hlX?k4?uN@arM4oX-=l7nO!@9_Yz zm&g2>IB2F!jsR(li1M3;(B^T#&DxH-wmj&r@dz%~n1xeF3)T@KESNO$6;O z1iqa*w00WxQeBzguC`3@N#^U_0~vRELAyZ){<8!Cp`p-XR()1u&<|^PhL)kYicgw5 z&e@!1oc-**yr;{zj2S+;zhsB23s^LC*rA}mxYR$Rd+74EYGbx)lnH++ji9Il>dDkw zr^U*~>Z&GW_xo|Rqn7>nx9anicj0LPf>O@+gTDm{wca5td=xsL@x|(Yu)ZLgyWBfu zuw@df(^w2S_%<2%b3omk^p)79x{`D8ky(wt#q3y!y$?sYr*dkIU+9df!9_t!fdqe- zVX?#}-+ngsD&}(&qLXOj_+7d(IU`}|^#@E1?wg?d^f}1XHOUPCew*i$+>Zljm1j)%1%VV z)sW$tBhvVjSDuZ75h9vU{kJy5XruU2;xdWZm`qM{2F}NW8wWH&ur9R0VOJAjW#eS-wOM)-goct+3FsB_^?m6CfZZ>-|{) zC4Um*5--C>ND+MdyB;?}9+>kIW3rwkOMsiw^-S|q(_Uvun)PPqZIqZ%1|^0aJJUp@ zAEYRL0q{$nlyTlY&5w>t_CH9DKJc1xuK{(6r~OUANJ^vAb#nUL9h@jzwCSQu!(`nh z%>1JbzOiRRmjlgG<*Z~`2Uz?6gq@1b$XTR{BKkrE+BPrOIM=vM{ztT@>^JQZA+<$= zJ9%dLi(ZlGJqo(j9&c!>1=PTLL^yiU)7blk-rGk7n2d&1;|2}5n5L?ms{_Y1T-5(7 z(#3PB3rAj&Xxi}`B-BtjxE#i3UM4b7L(jC6c6sD?GF$li1P~y+L<==# z_nNP(;Sb0(P1EZ@l+Cb|^r<1CR8EmW_J38EbM3mf%`D!EmPpJwPJ_iJSH1Tm8Ua!n z(0RLjed#knCt{5u3;Eu7mRtPeC^O0+xR6a3+K)6BujK6_Z`?MD01B&$9hT==$y|B< zw~4u9xccvB?Vl6*E3m?ZxLwwqfZ`m~=+f+oL>O&3#|u!U<`z<>PKVt zZ?Gz%Ryg6fIf;qMZNZx>-`JD!6-?x<&_l_ld5=A;`)E>AYvbtEA^4QM1yg!n{yR-LA~$kJZ6 znX0#rkMo*rKnUZ=gL$Ka@Fp$!+g^pXoOFOP0nE#G=JxtNiAY?g+V8=eMs=Q+7#WDE#=i*9JzSJ5G=riP~=|rQxdKB_ak}_NEyqz8H}N7+t-& zdmzuo?IIKdGIHRuCp&k6cdEvV^Noj069b9GKWG~@f^$lv6hT6DgZ~{uiIvba$k$d~ z6gj)W&~{6>H1P{}R_!ClJ9kpUnPbnvCBZ7VR$Uw#>gFW`GTAf&n%RYfqG`)k^BqV& zn^~L0QmcQ3PSp;GiW3eR3xA21UrifBHe|UquFatlsh+KF@r*?44by*-Yp5t~O*E?75-1iEv z)x@Xceoke=NAj{oL2*11v@j|BD$w`gck&u!^*#jPctw~20b&UXq!nq;gjJStrDT6 zy=RkJ6O7w*Tr=qNMe6+lH?`(WCV%2}_KG4Z@pg|kty9QSSCxk0f;GQ=3D+e4Zsd9A zO;}_-hSctMuJ2=3O|CdJFx3Oq4b`>O|1F{<*-#|Y@V1&r zMDAzycCG5UK6McDNHwfv?Zr=wm03!Ip($d{u}p22nE);tBQluRgqW|{G$O3QQA(>G zRrH@IOrJ3TZ#l24am#$N4()>hq<;Owm=6>aY4n$Qxv{G@fk^FWLN=YLO6o;+NTcypH`bgF{RVo`}B&^wGipB7Z!GUhk}svF#^g- zl(whzP>oN50rXXnU>5!^OsZb=xF*v;P7Q_lSkos&Jr1I?UCGp+KADcPr@NxUrsyw( znzR0=u`onW+3vp-WdMx@!cj^IMvMM}>sCnx?%+u}ec#Ko2yL-1UZ;_;+Qc-_c2lT*9>TUX$>j*cI z9n~s%6b|}>E_Kp4H`XxyNNu6t?M+cZS@(b2Wboi|N@Fg!dP88-_){PkjTl=??qTR* zBWdJgKXm-o_u(d70xT0vo!{y$S-10vnlXHiLPfbPd<%U=&y%o5+mSabH&$EkARdmQ zRtlE~X_BXp?n@U|dZ2Kit3l7Rtj+AMMt}~ESe}*kVLnfTEgjQ%plRb+o1tJF<_8vI zranpvU^OJD&5ovN>|vukNpXB4`lg*A_8r-a*{62PrTqhUPJ!wZ>Mrqmrkei-;j7LV zHxz=**i4@&EjG|@u9lvJVtPV+tZv4{bkOguZpP0GcQq%z#8=3RhDd?t?o=U7tmMgX zW0gGve(y6vJ6?s?0hCYTN{C#~_OMvc{tNkF6|4On?|YR!>pyBR;P+HpBDq>y7bEFem67M z^;A>1_KypD1B?By20Low`?Y_6TNP?r)Qcz@v|i3D2{<1fh1XH+H%c z2L`@eXRmL^2@=BaGor>^W$Z>0{m_lp&0`vK$qgwP_j4jH%7Sew z#r%UMk!#->;M7KDS%;M+qUfZkyeMJAizO7&7HHCy#wB^|yuD(X~Wg46?PP;1chpKono;Qh6TH~hP+M%`_kv{;5>Q&RL`^m7Cx)M52R-Cw> z@nBb~DX_r?PlE8H!sMeFOS|&5A`eujbOK)wqdBU_Ej-r-E>8J;f3)k8$?LUm^zktj z8nWF$Itr6wM;Ub_0V9X6#+(iPC6(4iGrRv58KNaiQP1ylb@Hox_Xngc@`+@M26D>+ z$m)Og4M(lS`vXE}bT(uNjR_=>KMS8qn{6bVgoXrZZY+p&=dg;GsRhV@rBq`uy-MmX zsjx0e+NEsx6X_}W``Mr5e?@5js_|!0Pf2bS9jjqNH=>Laq65k$#zzcD9{$T7$4Y8Y z+!`QW(JCj$UJz+7e@_8tPfh{X=0MIR{U+(zL;lJOzy!SC6g|OL0Pyp&*0OR5lFe(- zg7cb26Umhs>j_Zk0{bJN{uOXK>5aC_BywN2lS_ahiKku0&boJG6Ake>*a0U%TlSZu z0Ww%A?`}77;T_`4iQr2=PBZB=5T#vv1)IL*Yo#&5fmAi02VL0^kb4|H*iqWOxZw$$ z5u-!*s+6f~((jgNrS8rpf-a5!d$sRz*|1@(^p|{9#?W4Da|eBMgqzzxDM{b!vo7|W z$C->qZQ59}9ovJ~uKuH1^!T9LG}nZjbIwq>#D2>T6>JQ@IgqWgW?NJwjtWi8E!SBr zLb3l%xai4HV-*tvLa*paq|Qfe?1aGeOb-ivCDq+ek42xk60ey`bLP;A@+9aP4Te^fMqN6YS^cy(L6HNpeIjimnOi4%x?c+Vd>`XJu2Sm^ro8dQ7sL6N5JpLnF(K8mp`=+j$rceK5o60} z!cHH|Ph_~mzyk6FI>_@_qDcK_Vl6aK4AL)R5vqbTNMY(fIMCw^0#E3t#W7>rSnB%Q zR+b&!)Ya+gGBRRgBZLQbJQA#Q;Zcno_^NE$kzVPLwgSK*KlaxSE zU`35+vo>^}yf24rSC>ATv9`Q*i>z#Uk-c?i)XCf&VatxP-8_8OQcFOpklD{0Zt+dd z>}r;8ze+$T(s=yyTolT--HhO;i=|7BDzID?U|beH#7M~|pR5!egBQ}FnN4Szv|#

L%hr`-U0 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

>fz(0PJ?9z5y-H#|7>6+jYy56h_R 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 SLyEzG^OB$bSF8VDi~j>MbwPRn literal 0 HcmV?d00001 diff --git a/docs/入门指南/基本概念.md b/docs/入门指南/基本概念.md index 6ceb440..e71fd5b 100644 --- a/docs/入门指南/基本概念.md +++ b/docs/入门指南/基本概念.md @@ -176,15 +176,17 @@ page = MixPage() ## 📍 `WebPage`结构图 -待更新。 +`WebPage`继承自`ChromiumPage`和`SessionPage`,前者负责控制浏览器,后者负责数据包收发。 + +![](../imgs/webpage.jpg) ## 📍 `MixPage`结构图 -如图所示,`Drission`对象负责链接的创建、共享登录状态等工作,类似 selenium 中 driver 的概念。 +`Drission`对象负责链接的创建、共享登录状态等工作,类似 selenium 中 driver 的概念。 `MixPage`对象负责对获取到的页面进行解析、操作。 `DriverElement`和`SessionElement`则是从页面对象中获取到的元素对象。负责对元素进行解析和操作。 -![](https://gitee.com/g1879/DrissionPage-demos/raw/master/pics/20201118170751.jpg) +![](../imgs/mixpage.jpg) # ✔️ 配置管理 diff --git a/docs/入门指南/贴心设计.md b/docs/入门指南/贴心设计.md new file mode 100644 index 0000000..5f27d33 --- /dev/null +++ b/docs/入门指南/贴心设计.md @@ -0,0 +1,99 @@ +这里介绍一些本库内置了人性化设计。 + +# ✔️ 无处不在的等待 + +网络环境不稳定,很多时候程序须要稍微等待一下才能继续运行。等待太少,会导致程序出错,等待太多,又会浪费时间。为了解决这些问题,本库在大量须要等待的部分内置了超时功能,并且可以随时灵活设置,大幅降低程序复杂性。 + +- 查找元素内置等待。可以为每次查找元素单独设定等待时间。有些页面会不定期出现提示信息,如果一律等待会太浪费时间,可以独立设置一个很短的超时时间,避免浪费。 + +- 等待下拉列表选项。很多下拉列表使用 js 加载,本库选择下拉列表时,会自动等待列表项出现。 + +- 等待弹窗。有时预期的 alert 未必立刻出现,本库处理 弹窗消息时也可以设置等待。 + +- 等待元素状态改变。使用`wait_ele()`方法可等待元素出现、消失、删除等状态。 + +- 点击功能也内置等待,如遇元素被遮挡可不断重试点击。 + +- 设置页面加载时限及加载策略。有时不需要完整加载页面资源,可根据实际须要设置加载策略。 + +# ✔️ 自动重试连接 + +在访问网站时,由于网络不稳定可能导致连接异常。本库设置了连接自动重试功能,当网页连接异常,会默认重试 3 次。当然也可以手动设置次数和间隔。 + +```python +page.get('xxxxxx', retry=5, interval=3) # 出错是重试 5 次,每次间隔 3 秒 +``` + +# ✔️ 极简的定位语法 + +本库制定了一套简洁高效的查找元素语法,支持链式操作,支持相对定位。与 selenium 繁琐的语法相比简直不要太方便。 + +而且每次查找内置等待,可以独立设置每次查找超时时间。 + +同是设置了超时等待的查找,对比一下: + +```python +# 使用 selenium: +element = WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]'))) + +# 使用 DrissionPage: +element = page('some text', timeout=10) +``` + +# ✔️ 无需切入切出,逻辑清晰 + +使用过 selenium 的人都知道,selenium 同一时间只能操作一个标签页或`