diff --git a/DrissionPage/config.py b/DrissionPage/config.py
index 8b50562..cd2ae76 100644
--- a/DrissionPage/config.py
+++ b/DrissionPage/config.py
@@ -488,8 +488,8 @@ class DriverOptions(Options):
self.timeouts['pageLoad'] *= 1000
self.timeouts['script'] *= 1000
- if '--no-sandbox' not in self._arguments:
- self._arguments.append('--no-sandbox')
+ # if '--no-sandbox' not in self._arguments:
+ # self._arguments.append('--no-sandbox')
@property
def driver_path(self):
diff --git a/README.md b/README.md
index ab6f617..462b125 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-#
+#
DrissionPage 是一个基于 python 的网页自动化工具。
@@ -58,14 +58,23 @@ DrissionPage 是一个基于 python 的网页自动化工具。
除了以上优点,本库还内置了无数人性化设计。
- 极简的语法规则。集成大量常用功能,代码更优雅
+
- 定位元素更加容易,功能更强大稳定
+
- 无处不在的等待和自动重试功能。使不稳定的网络变得易于控制,程序更稳定,编写更省心
+
- 提供强大的下载工具。操作浏览器时也能享受快捷可靠的下载功能
+
- 允许反复使用已经打开的浏览器。无须每次运行从头启动浏览器,调试超方便
+
- 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项
+
- 内置 lxml 作为解析引擎,解析速度成几个数量级提升
+
- 使用 POM 模式封装,可直接用于测试,便于扩展
+
- 高度集成的便利功能,从每个细节中体现
+
- 还有很多细节,这里不一一列举,欢迎实际使用中体验:)
# 🌟 简单演示
diff --git a/docs/README.md b/docs/README.md
index eaa2fb8..bc47ef2 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,4 +1,4 @@
-#
+# ✨️ 概述
DrissionPage 是一个基于 python 的网页自动化工具。
@@ -10,6 +10,10 @@ DrissionPage 是一个基于 python 的网页自动化工具。
它的语法简洁而优雅,代码量少,对新手友好。
+
+
+项目地址:[gitee](https://gitee.com/g1879/DrissionPage) | [github](https://github.com/g1879/DrissionPage)
+
**交流QQ群:** 897838127
**联系邮箱:** g1879@qq.com
@@ -56,15 +60,24 @@ DrissionPage 是一个基于 python 的网页自动化工具。
除了以上优点,本库还内置了无数人性化设计。
- 极简的语法规则。集成大量常用功能,代码更优雅
+
- 定位元素更加容易,功能更强大稳定
+
- 无处不在的等待和自动重试功能。使不稳定的网络变得易于控制,程序更稳定,编写更省心
+
- 提供强大的下载工具。操作浏览器时也能享受快捷可靠的下载功能
+
- 允许反复使用已经打开的浏览器。无须每次运行从头启动浏览器,调试超方便
+
- 使用 ini 文件保存常用配置,自动调用,提供便捷的设置,远离繁杂的配置项
+
- 内置 lxml 作为解析引擎,解析速度成几个数量级提升
+
- 使用 POM 模式封装,可直接用于测试,便于扩展
+
- 高度集成的便利功能,从每个细节中体现
-- 还有很多细节,这里不一一列举,欢迎实际使用中体验:)
+
+- 还有很多细节,这里不一一列举,欢迎实际使用中体验:D
# 🖐🏻 免责声明
diff --git a/docs/WebPage使用方法/3.1创建页面对象.md b/docs/WebPage使用方法/3.1创建页面对象.md
index 698238e..68c2d37 100644
--- a/docs/WebPage使用方法/3.1创建页面对象.md
+++ b/docs/WebPage使用方法/3.1创建页面对象.md
@@ -1,4 +1,4 @@
-在入门指南的快速上手一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
+在入门指南的上手示例一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
常用的页面对象有 3 种:
@@ -48,7 +48,8 @@
# ✔️ 直接创建
这种方式代码最简洁,程序会从配置文件中读取配置,自动生成页面对象。可以保持代码简洁。
-在基本概念一节我们提到过,本库使用配置文件记录常用配置信息,也可以直接把配置写在代码里。
+在基本概念一节我们提到过,本库使用配置文件记录常用配置信息,也可以直接把配置写在代码里。
+
?>**Tips:**
默认配置文件中,程序使用 9222 端口启动浏览器,浏览器路径为 Chrome。如路径中没找到浏览器执行文件,Windows 系统下程序会在注册表中查找路径,如果还是没找到,则要用下一种方式手动配置路径。
```python
@@ -58,7 +59,7 @@ page = WebPage('d')
# 指定以 s 模式创建页面对象
page = WebPage('s')
-# 用 ChroumiumPage 创建页面对象
+# 用 ChromiumPage 创建页面对象
page = ChromiumPage()
# 用 SessionPage 创建页面对象
diff --git a/docs/index.html b/docs/index.html
index 42f6469..053e538 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -55,7 +55,7 @@
mergeNavbar: true, //小屏设备下合并导航栏到侧边栏
loadSidebar: true,
loadNavbar: true,
- coverpage: true,
+ coverpage: false,
subMaxLevel: 2,
pagination: {
previousText: 'PREVIOUS',
diff --git a/docs/入门指南/上手示例/控制浏览器.md b/docs/入门指南/上手示例/控制浏览器.md
index 5a1380a..f6df286 100644
--- a/docs/入门指南/上手示例/控制浏览器.md
+++ b/docs/入门指南/上手示例/控制浏览器.md
@@ -6,10 +6,12 @@
网址:[https://gitee.com/login](https://gitee.com/login)
-打开网址,按`F12`,我们可以看到页面元素如下:
+打开网址,按`F12`,我们可以看到页面 html 如下:

+(图片点击放大)
+
用户名输入框`id`为`'user_login'`,密码输入框`id`为`'user_password'`,登录按钮`value`为`'登 录'`。
我们可以用这三个属性定位这三个元素,然后对其输入数据和点击。
diff --git a/docs/入门指南/上手示例/收发数据包.md b/docs/入门指南/上手示例/收发数据包.md
index 2aeffb3..a49c281 100644
--- a/docs/入门指南/上手示例/收发数据包.md
+++ b/docs/入门指南/上手示例/收发数据包.md
@@ -8,10 +8,12 @@
这个示例的目标,要获取所有库的名称和链接,为避免对网站造成压力,我们只采集 3 页。
-打开网址,按`F12`,我们可以看到页面元素如下:
+打开网址,按`F12`,我们可以看到页面 html 如下:

+(图片点击放大)
+
从 html 代码中可以看到,所有开源项目的标题都是`class`属性为`'title project-namespace-path'`的``元素。我们可以遍历这些``元素,获取它们的信息。
同时,我们观察到,列表页网址是以页数为参数访问的,如第一页 url 为`https://gitee.com/explore/all?page=1`,页数就是`page`参数。因此我们可以通过修改这个参数访问不同的页面。
@@ -40,7 +42,7 @@ for i in range(1, 4):
输出:
-```
+```console
小熊派开源社区/BearPi-HM_Nano https://gitee.com/bearpi/bearpi-hm_nano
明月心/PaddleSegSharp https://gitee.com/raoyutian/PaddleSegSharp
RockChin/QChatGPT https://gitee.com/RockChin/QChatGPT
diff --git a/docs/入门指南/上手示例/模式切换.md b/docs/入门指南/上手示例/模式切换.md
index d3aced8..e81e94a 100644
--- a/docs/入门指南/上手示例/模式切换.md
+++ b/docs/入门指南/上手示例/模式切换.md
@@ -1 +1,117 @@
-# 施工中。。。
+这个示例演示`WebPage`如何切换控制浏览器和收发数据包两种模式。
+
+通常,切换模式是用来应付登录检查很严格的网站,可以用浏览器处理登录,再转换模式用收发数据包的形式来采集数据。
+
+但是这种场景须要有对应的账号,不便于演示。演示使用浏览器在百度搜索,然后转换到收发数据包的模式来读取数据。虽然现实使用意义不大,但可以了解其工作模式。
+
+# ✔️ 页面分析
+
+网址:[https://www.baidu.com](https://www.baidu.com)
+
+打开网址,按`F12`,我们可以看到页面 html 如下:
+
+
+
+(图片点击放大)
+
+输入框``元素`id`属性为`'kw'`,“百度一下”按钮``元素`id`属性为`'su'`。
+
+输入关键词搜索后,再查看页面 html:
+
+
+
+(图片点击放大)
+
+通过分析 html 代码,我们可以看出,每个结果的标题都存在于``元素里。因此,我们可以获取页面中所有``元素,再遍历获取其信息。
+
+# ✔️ 示例代码
+
+您可以直接运行以下代码:
+
+```python
+from DrissionPage import WebPage
+
+# 创建页面对象
+page = WebPage()
+# 访问网址
+page.get('https://www.baidu.com')
+# 查找文本框元素并输入关键词
+page('#kw').input('DrissionPage')
+# 点击搜索按钮
+page('#su').click(wait_loading=True)
+# 切换到收发数据包模式
+page.change_mode()
+# 获取所有元素
+links = page.eles('tag:h3')
+# 遍历获取到的元素
+for link in links:
+ # 打印元素文本
+ print(link.text)
+```
+
+输出:
+
+```console
+DrissionPage: 一个整合了selenium和requests_html的模块,...
+python采集库DrissionPage- 腾讯云开发者社区-腾讯云
+DrissionPage- Web应用开发 - 青少年人工智能资源与创新...
+DrissionPage-demos: 使用DrissionPage爬取常见网站的示例。
+DrissionPagev1.9.0 已经发布,WEB 自动化测试集成工具_程...
+DrissionPage首页、文档和下载 - WEB 自动化测试集成工具 ...
+DrissionPage- Gitee
+DrissionPage—— Web 自动化测试集成工具 - OSCHINA - ...
+DrissionPagev1.10.0 已经发布,WEB 自动化测试集成工具 |...
+DrissionPagev2.2.1 发布,WEB 自动化测试集成工具
+```
+
+# ✔️ 示例详解
+
+首先,我们导入页面对象`WebPage`类。
+
+```python
+from DrissionPage import WebPage
+```
+
+接下来,我们创建一个`WebPage`对象。
+
+```python
+page = WebPage()
+```
+
+然后控制浏览器访问百度。
+
+```python
+page.get('https://www.baidu.com')
+```
+
+再通过模拟输入的方式输入关键词,模拟点击搜索按钮。
+
+这里查找元素的方法上两个示例已经讲过,不再细说。
+
+`click()`方法里面的`wait_loading`参数用于等待页面进入加载状态,避免操作过快出现异常。
+
+```python
+page('#kw').input('DrissionPage')
+page('#su').click(wait_loading=True)
+```
+
+`change_mode()`方法用于切换工作模式,从当前控制浏览器的模式切换到收发数据包模式。
+
+切换的时候程序会在新模式重新访问当前 url。
+
+```python
+page.change_mode()
+```
+
+切换后,我们可以用与控制浏览器一致的语法,获取页面元素,这里`eles()`方法是获取页面中所有``元素,它返回这些元素对象组成的列表。`tag:`是查找条件,表示查找某种类型的元素。
+
+```python
+links = page.eles('tag:h3')
+```
+
+最后,我们遍历这些元素,并逐个打印它们包含的文本。
+
+```python
+for link in links:
+ print(link.text)
+```