mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
修改文档
This commit is contained in:
parent
4c33b1cd0a
commit
01834e32c8
43
README.md
43
README.md
@ -1,7 +1,5 @@
|
||||
# ✨️简洁!易用 !方便!✨️
|
||||
|
||||
# ⭐️ 简介
|
||||
|
||||
DrissionPage,即 driver 和 session 组合而成的 page。
|
||||
是个基于 python 的 Web 自动化操作集成工具。
|
||||
它用 POM 模式封装了页面和元素常用的方法,
|
||||
@ -16,7 +14,7 @@ DrissionPage,即 driver 和 session 组合而成的 page。
|
||||
|
||||
**联系邮箱:** g1879@qq.com
|
||||
|
||||
## 📔 背景
|
||||
## 📕 背景
|
||||
|
||||
requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,构造复杂的请求,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高。若数据是由 JS 计算生成的,还须重现计算过程,体验不好,开发效率不高。
|
||||
使用 selenium,可以很大程度上绕过这些坑,但 selenium 效率不高。因此,这个库将 selenium 和 requests 合而为一,不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率。
|
||||
@ -27,7 +25,7 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
|
||||
|
||||
作者有多年自动化和爬虫经验,踩过无数坑,总结出的经验全写到这个库里了。内置了 N 多实用功能,对常用功能作了整合和优化。
|
||||
|
||||
## 🔮 特性
|
||||
## 🎉 特性
|
||||
|
||||
- 代码高度集成,以简洁的代码为第一追求。
|
||||
- 页面对象可在 selenium 和 requests 模式间任意切换,保留登录状态。
|
||||
@ -62,13 +60,13 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
|
||||
- d 模式配置可同时兼容`debugger_address`和其它参数,原生不能兼容。
|
||||
- 还有很多这里不一一列举…………
|
||||
|
||||
# 🪄 简单演示
|
||||
# 🍀 简单演示
|
||||
|
||||
**与 selenium 代码对比**
|
||||
☘️ **与 selenium 代码对比**
|
||||
|
||||
以下代码实现一模一样的功能,对比两者的代码量:
|
||||
|
||||
- 用显性等待方式定位第一个文本包含`some text`的元素
|
||||
🌿 用显性等待方式定位第一个文本包含`some text`的元素
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -78,7 +76,7 @@ element = WebDriverWait(driver).until(ec.presence_of_element_located((By.XPATH,
|
||||
element = page('some text')
|
||||
```
|
||||
|
||||
- 跳转到第一个标签页
|
||||
🌿 跳转到第一个标签页
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -88,7 +86,7 @@ driver.switch_to.window(driver.window_handles[0])
|
||||
page.to_tab(0)
|
||||
```
|
||||
|
||||
- 按文本选择下拉列表
|
||||
🌿 按文本选择下拉列表
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -100,7 +98,7 @@ select_element.select_by_visible_text('text')
|
||||
element.select('text')
|
||||
```
|
||||
|
||||
- 拖拽一个元素
|
||||
🌿 拖拽一个元素
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -110,7 +108,7 @@ ActionChains(driver).drag_and_drop(ele1, ele2).perform()
|
||||
ele1.drag_to(ele2)
|
||||
```
|
||||
|
||||
- 滚动窗口到底部(保持水平滚动条不变)
|
||||
🌿 滚动窗口到底部(保持水平滚动条不变)
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -120,7 +118,7 @@ driver.execute_script("window.scrollTo(document.documentElement.scrollLeft, docu
|
||||
page.scroll.to_bottom()
|
||||
```
|
||||
|
||||
- 设置 headless 模式
|
||||
🌿 设置 headless 模式
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -131,7 +129,7 @@ options.add_argument("--headless")
|
||||
set_headless()
|
||||
```
|
||||
|
||||
- 获取伪元素内容
|
||||
🌿 获取伪元素内容
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -141,7 +139,7 @@ text = webdriver.execute_script('return window.getComputedStyle(arguments[0], ":
|
||||
text = element.pseudo_after
|
||||
```
|
||||
|
||||
- shadow-root 操作
|
||||
🌿 shadow-root 操作
|
||||
|
||||
selenium 新增了`ShadowRoot`,但功能实在是太少。
|
||||
```python
|
||||
@ -156,7 +154,7 @@ ele = shadow_element.ele('tag:div')
|
||||
ele.click()
|
||||
```
|
||||
|
||||
- 用 xpath 直接获取属性或文本节点(返回文本)
|
||||
🌿 用 xpath 直接获取属性或文本节点(返回文本)
|
||||
|
||||
```python
|
||||
# 使用 selenium:
|
||||
@ -167,7 +165,7 @@ class_name = element('xpath://div[@id="div_id"]/@class')
|
||||
text = element('xpath://div[@id="div_id"]/text()[2]')
|
||||
```
|
||||
|
||||
- 随时让浏览器窗口消失和显示
|
||||
🌿 随时让浏览器窗口消失和显示
|
||||
|
||||
```python
|
||||
# selenium 无此功能
|
||||
@ -179,11 +177,11 @@ page.show_browser() # 重新显示浏览器窗口
|
||||
|
||||
注:本功能只支持 Windows,且须设置了`local_port`或`debugger_address`参数时才能生效。
|
||||
|
||||
**与 requests 代码对比**
|
||||
☘️ **与 requests 代码对比**
|
||||
|
||||
以下代码实现一模一样的功能,对比两者的代码量:
|
||||
|
||||
- 获取元素内容
|
||||
🌿 获取元素内容
|
||||
|
||||
```python
|
||||
url = 'https://baike.baidu.com/item/python'
|
||||
@ -204,7 +202,7 @@ title = page('tag:h1').text
|
||||
|
||||
Tips: DrissionPage 自带默认`headers`
|
||||
|
||||
- 下载文件
|
||||
🌿 下载文件
|
||||
|
||||
```python
|
||||
url = 'https://www.baidu.com/img/flexible/logo/pc/result.png'
|
||||
@ -220,7 +218,7 @@ with open(f'{save_path}\\img.png', 'wb') as fd:
|
||||
page.download(url, save_path, 'img') # 支持重命名,处理文件名冲突,自动创建目标文件夹
|
||||
```
|
||||
|
||||
**模式切换**
|
||||
☘️ **模式切换**
|
||||
|
||||
用 selenium 登录网站,然后切换到 requests 读取网页。两者会共享登录信息。
|
||||
|
||||
@ -267,7 +265,7 @@ Git 命令学习 https://oschina.gitee.io/learn-git-branching/
|
||||
Git 命令学习
|
||||
```
|
||||
|
||||
# 🔠 使用方法
|
||||
# 🛠 使用方法
|
||||
|
||||
[点击跳转到使用文档](http://g1879.gitee.io/drissionpage)
|
||||
|
||||
@ -282,6 +280,5 @@ Git 命令学习
|
||||
|
||||
如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)
|
||||
|
||||
|  |  |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||

|
||||
|
||||
|
@ -33,7 +33,7 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
|
||||
- 两种模式提供一致的 API,使用体验一致。
|
||||
- 人性化设计,集成众多实用功能,大大降低开发工作量。
|
||||
|
||||
## 💡 亮点功能
|
||||
## 🎇 亮点功能
|
||||
|
||||
- 每次运行程序可以反复使用已经打开的浏览器。如手动设置网页到某个状态,再用程序接管,或手动处理登录,再用程序爬内容。无须每次运行从头启动浏览器,超级方便。
|
||||
- 使用 ini 文件保存常用配置,自动调用,也提供便捷的设置 API,远离繁杂的配置项。
|
||||
@ -69,6 +69,4 @@ requests 爬虫面对要登录的网站时,要分析数据包、JS 源码,
|
||||
|
||||
如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)
|
||||
|
||||
|  |  |
|
||||
| ------------------------------------------------------------ | ------------------------------------------------------------ |
|
||||
|
||||

|
||||
|
@ -1,26 +1,26 @@
|
||||
## 全局
|
||||
|
||||
- 切换模式时会自动复制 cookies 到目标模式,并在目标模式下重新访问当前网址,可在参数中禁止自动访问。
|
||||
- 访问网址时如遇到异常,会自动重试3次,也可在对象属性或连接参数里设置重试次数和间隔时间。d 模式这个功能要重载了 check_page() 方法才有效。
|
||||
- 获取到的文本会自动替换 & nbsp; 为空格。
|
||||
- 可以在元素下直接使用 > 以 css selector 方式获取当前元素直接子元素。如 ele1.ele('css:>div')。原生不支持这种写法。
|
||||
- 用 xpath 获取元素的子元素时,可省略前面的 .。如 ele1.ele('div') 和 ele1.ele('.//div') 是一致的。
|
||||
- 切换模式时会自动复制`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。
|
||||
- `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 属性。
|
||||
- 在创建`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 属性。
|
||||
- 若设置了 debugger_address,创建 driver 时程序会自动检测该端口,如为空,则自动在该端口启动一个浏览器进程并接入。程序完毕该浏览器不自动关闭,以便后续使用。
|
||||
- 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 时程序会自动检测该端口,如为空,则自动在该端口启动一个浏览器进程并接入。程序完毕该浏览器不自动关闭,以便后续使用。
|
@ -1,4 +1,4 @@
|
||||
## DrissionPage
|
||||
# DrissionPage
|
||||
|
||||
以页面为单位整合 selenium 和 requests,封装了常用操作。
|
||||
极大地简化了代码,易于使用,并可实现两种模式的无缝切换。
|
||||
|
@ -1,43 +1,43 @@
|
||||
* [⭐️ 简介](README.md)
|
||||
|
||||
* 🧭入门指南
|
||||
* [🪄 基本概念](入门指南\基本概念.md)
|
||||
* [🖐🏻 快速上手](入门指南\快速上手.md)
|
||||
* 🎭 特性演示
|
||||
* [🐙 与 requests 对比](入门指南\特性演示\与requests代码对比.md)
|
||||
* [🐟 与 selenium 对比](入门指南\特性演示\与selenium代码对比.md)
|
||||
* [🦈 模式切换](入门指南\特性演示\模式切换.md)
|
||||
* [🐳 获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md)
|
||||
* [🐬 下载文件](入门指南\特性演示\下载文件.md)
|
||||
* [🧭 入门指南](#)
|
||||
* [🔥 基本概念](入门指南\基本概念.md)
|
||||
* [👍 快速上手](入门指南\快速上手.md)
|
||||
* [🍀 特性演示](#)
|
||||
* [🌿 与 requests 对比](入门指南\特性演示\与requests代码对比.md)
|
||||
* [🌿 与 selenium 对比](入门指南\特性演示\与selenium代码对比.md)
|
||||
* [🌿 模式切换](入门指南\特性演示\模式切换.md)
|
||||
* [🌿 获取并打印元素属性](入门指南\特性演示\获取并打印元素属性.md)
|
||||
* [🌿 下载文件](入门指南\特性演示\下载文件.md)
|
||||
|
||||
* 🔠使用方法
|
||||
* [🐵 创建页面对象](使用方法\创建页面对象.md)
|
||||
* [🦊 访问网页](使用方法\访问网页.md)
|
||||
* [🐶 查找页面元素](使用方法\查找页面元素.md)
|
||||
* [🦝 获取元素信息](使用方法\获取元素信息.md)
|
||||
* [🐱 元素操作](使用方法\元素操作.md)
|
||||
* [🐮 获取网页信息](使用方法\获取网页信息.md)
|
||||
* [🐷 页面操作](使用方法\页面操作.md)
|
||||
* 🐻 启动配置
|
||||
* [🐉 概述](使用方法\启动配置\概述.md)
|
||||
* [🦖 Chrome 启动配置]('使用方法\启动配置\Chrome启动配置.md')
|
||||
* [🦕 Session 启动配置](使用方法\启动配置\Session启动配置.md)
|
||||
* [🐊 使用配置文件](使用方法\启动配置\使用配置文件.md)
|
||||
* [🐼 下载文件](使用方法\下载文件.md)
|
||||
* [🐨 cookies 的使用](使用方法\cookies的使用.md)
|
||||
* [🐰 Drission 对象](使用方法\Drission对象.md)
|
||||
* [🐹 对接 selenium 及 requests 代码](使用方法\对接selenium及requests代码.md)
|
||||
* [🦇 使用其它浏览器](使用方法\使用其它浏览器.md)
|
||||
* [🦒 DriverPage 和 SessionPage](使用方法\DriverPage和SessionPage.md)
|
||||
* [🐭 打包程序](使用方法\打包程序.md)
|
||||
* [🛠 使用方法](#)
|
||||
* [🔨 创建页面对象](使用方法\创建页面对象.md)
|
||||
* [🔨 访问网页](使用方法\访问网页.md)
|
||||
* [🔨 查找页面元素](使用方法\查找页面元素.md)
|
||||
* [🔨 获取元素信息](使用方法\获取元素信息.md)
|
||||
* [🔨 元素操作](使用方法\元素操作.md)
|
||||
* [🔨 获取网页信息](使用方法\获取网页信息.md)
|
||||
* [🔨 页面操作](使用方法\页面操作.md)
|
||||
* [🔨 启动配置](#)
|
||||
* [🔧 概述](使用方法\启动配置\概述.md)
|
||||
* [🔧 Chrome 启动配置](使用方法\启动配置\Chrome启动配置.md)
|
||||
* [🔧 Session 启动配置](使用方法\启动配置\Session启动配置.md)
|
||||
* [🔧 使用配置文件](使用方法\启动配置\使用配置文件.md)
|
||||
* [🔨 下载文件](使用方法\下载文件.md)
|
||||
* [🔨 cookies 的使用](使用方法\cookies的使用.md)
|
||||
* [🔨 Drission 对象](使用方法\Drission对象.md)
|
||||
* [🔨 对接 selenium 及 requests 代码](使用方法\对接selenium及requests代码.md)
|
||||
* [🔨 使用其它浏览器](使用方法\使用其它浏览器.md)
|
||||
* [🔨 DriverPage 和 SessionPage](使用方法\DriverPage和SessionPage.md)
|
||||
* [🔨 打包程序](使用方法\打包程序.md)
|
||||
|
||||
* 💖 实用示例
|
||||
* [💖 实用示例](#)
|
||||
* [🧡 自动登录码云](实用示例\自动登录码云.md)
|
||||
* [🧡 获取各国疫情排名](实用示例\获取各国疫情排名.md)
|
||||
* [🧡 下载星巴克产品图片](实用示例\下载星巴克产品图片.md)
|
||||
* [🧡 同时操作多个浏览器](实用示例\同时操作多个浏览器.md)
|
||||
|
||||
* [✨️ Tips大集合](Tips大集合.md)
|
||||
* [⚡️ Tips大集合](Tips大集合.md)
|
||||
* [🎯️ 版本历史](版本历史.md)
|
||||
* [💐 鸣谢](鸣谢.md)
|
||||
|
||||
|
@ -8,7 +8,11 @@
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
|
||||
<meta content="Description" name="description">
|
||||
<meta content="width=device-width, initial-scale=1.0, minimum-scale=1.0" name="viewport">
|
||||
<link href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css" rel="stylesheet">
|
||||
<!-- <link href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css" rel="stylesheet">-->
|
||||
|
||||
<!-- Theme: Simple Dark -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-simple-dark.css">
|
||||
|
||||
<!--
|
||||
<link href="//unpkg.com/gitalk/dist/gitalk.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="./ignore/font.css">
|
||||
@ -17,6 +21,7 @@
|
||||
/* body {font-family: PingFang; } */
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
</head>
|
||||
@ -45,7 +50,7 @@
|
||||
},
|
||||
name: 'DrissionPage',
|
||||
repo: 'https://gitee.com/g1879/DrissionPage', // 主页
|
||||
sidebarDisplayLevel: 1, // 折叠层级
|
||||
sidebarDisplayLevel: 0, // 折叠层级
|
||||
autoHeader: true, // 自动增加标题
|
||||
mergeNavbar: true, //小屏设备下合并导航栏到侧边栏
|
||||
loadSidebar: true,
|
||||
|
@ -1,18 +1,18 @@
|
||||
Drission 对象用于管理 driver 和 session 对象。在多个页面协同工作时,Drission 对象用于传递驱动器,使多个页面类可控制同一个浏览器或 Session 对象。
|
||||
`Drission`对象用于管理`WebDriver`和`Session`对象。在多个页面协同工作时,`Drission`对象用于传递驱动器,使多个页面类可控制同一个浏览器或`Session`对象。
|
||||
可直接读取 ini 文件配置信息创建,也可以在初始化时传入配置信息。
|
||||
在“使用方法->创建页面对象”章节已经涉及过 Drission 的用法,这里介绍属性和方法。
|
||||
在“[使用方法->创建页面对象](创建页面对象.md)”章节已经涉及过`Drission`的用法,这里介绍属性和方法。
|
||||
|
||||
# Drission 类
|
||||
# `Drission`类
|
||||
|
||||
初始化参数:
|
||||
|
||||
- driver_or_options:driver 对象或 DriverOptions、Options 类,传入 False 则创建空配置对象
|
||||
- session_or_options:Session 对象或设置字典,传入 False 则创建空配置对象
|
||||
- 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'}
|
||||
- proxy:代理设置,`dict`类型。格式:{'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'}
|
||||
|
||||
前两个参数可直接接收 WebDriver 和 Session 对象,这时后面两个参数无效。
|
||||
若接收配置对象,则按照配置创建 WebDriver 和 Session 对象。
|
||||
前两个参数可直接接收`WebDriver`和`Session`对象,这时后面两个参数无效。
|
||||
若接收配置对象,则按照配置创建`WebDriver`和`Session`对象。
|
||||
|
||||
用 ini 文件信息创建:
|
||||
|
||||
@ -37,23 +37,23 @@ drission = Drission(driver_options=do)
|
||||
|
||||
## session
|
||||
|
||||
此属性返回该对象管理的 Session 对象。
|
||||
此属性返回该对象管理的`Session`对象。
|
||||
|
||||
## driver
|
||||
|
||||
此属性返回该对象管理的 WebDriver 对象。
|
||||
此属性返回该对象管理的`WebDriver`对象。
|
||||
|
||||
## driver_options
|
||||
|
||||
此属性返回用于创建 WebDriver 对象的 DriverOptions 对象。
|
||||
此属性返回用于创建`WebDriver`对象的`DriverOptions`对象。
|
||||
|
||||
## session_options
|
||||
|
||||
此属性以 dict 形式返回用于创建 Session 对象的配置参数。可传入 dict 或 SessionOptions 赋值。
|
||||
此属性以`dict`形式返回用于创建 Session 对象的配置参数。可传入`dict`或`SessionOptions`赋值。
|
||||
|
||||
## proxy
|
||||
|
||||
此属性返回代理信息,dict 形式。可传入 dict 赋值。格式:{'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'}
|
||||
此属性返回代理信息,`dict`形式。可传入`dict`赋值。格式:{'http': '127.0.0.1:1080', 'https': '127.0.0.1:1080'}
|
||||
|
||||
## debugger_progress
|
||||
|
||||
@ -65,15 +65,15 @@ drission = Drission(driver_options=do)
|
||||
|
||||
参数:无
|
||||
|
||||
返回: None
|
||||
返回:`None`
|
||||
|
||||
## get_browser_progress_id()
|
||||
|
||||
此方法用于获取浏览器进程id。
|
||||
此方法用于获取浏览器进程 id。
|
||||
|
||||
参数:无
|
||||
|
||||
返回: None
|
||||
返回:`None`
|
||||
|
||||
## hide_browser()
|
||||
|
||||
@ -81,7 +81,7 @@ drission = Drission(driver_options=do)
|
||||
|
||||
参数:无
|
||||
|
||||
返回: None
|
||||
返回: `None`
|
||||
|
||||
## show_browser()
|
||||
|
||||
@ -89,23 +89,23 @@ drission = Drission(driver_options=do)
|
||||
|
||||
参数:无
|
||||
|
||||
返回: None
|
||||
返回: `None`
|
||||
|
||||
## set_cookies()
|
||||
|
||||
此方法用于设置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
|
||||
|
||||
## cookies_to_session()
|
||||
|
||||
此方法用于把 WebDriver 对象的 cookies 复制到 Session 对象。
|
||||
此方法用于把`WebDriver`对象的`cookies`复制到`Session`对象。
|
||||
|
||||
参数:
|
||||
|
||||
@ -115,18 +115,18 @@ drission = Drission(driver_options=do)
|
||||
|
||||
## cookies_to_driver()
|
||||
|
||||
此方法用于把 Session 对象的 cookies 复制到 WebDriver 对象。
|
||||
复制 cookies 到浏览器必须指定域名。
|
||||
此方法用于把`Session`对象的`cookies`复制到`WebDriver`对象。
|
||||
复制`cookies`到浏览器必须指定域名。
|
||||
|
||||
参数:
|
||||
|
||||
- url:作用域
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## close_driver()
|
||||
|
||||
此方法用于关闭 WebDriver 对象,可选择是否关闭浏览器进程。
|
||||
此方法用于关闭`WebDriver`对象,可选择是否关闭浏览器进程。
|
||||
|
||||
参数:
|
||||
|
||||
@ -136,16 +136,16 @@ drission = Drission(driver_options=do)
|
||||
|
||||
## close_session()
|
||||
|
||||
此方法用于关闭 Session 对象。
|
||||
此方法用于关闭`Session`对象。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## close()
|
||||
|
||||
此方法用于关闭 Session 和 WebDriver 对象。
|
||||
此方法用于关闭`Session`和`WebDriver`对象。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
@ -1,4 +1,4 @@
|
||||
MixPage 支持获取和设置 cookies,具体使用方法如下:
|
||||
MixPage 支持获取和设置`cookies`,具体使用方法如下:
|
||||
|
||||
```python
|
||||
# 以字典形式返回 cookies,只会返回当前域名可用的 cookies
|
||||
@ -16,6 +16,6 @@ page.set_cookies(cookies)
|
||||
|
||||
**Tips:**
|
||||
|
||||
- d 模式设置 cookies 后要刷新页面才能看到效果。
|
||||
- s 模式可在 ini 文件、SessionOptions、配置字典中设置 cookies,在 MixPage 初始化时即可传入,d 模式只能用 set_cookies() 函数设置。
|
||||
- d 模式设置`cookies`后要刷新页面才能看到效果。
|
||||
- s 模式可在 ini 文件、`SessionOptions`、配置字典中设置`cookies`,在`MixPage`初始化时即可传入,d 模式只能用`set_cookies()`函数设置。
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
selenium 缺乏对浏览器下载文件的有效管理,难以进行检测下载状态、重命名、失败管理。
|
||||
使用 requests 下载文件能较好实现以上功能,但代码较为繁琐。
|
||||
因此 DrissionPage 封装了 download 方法,整合了两者优点,可从 selenium 获取登录信息,用 requests 进行下载。弥补了 selenium 的不足,使下载简洁高效。
|
||||
因此 DrissionPage 封装了`download()`方法,整合了两者优点,可从 selenium 获取登录信息,用 requests 进行下载。弥补了 selenium 的不足,使下载简洁高效。
|
||||
|
||||
## 功能
|
||||
|
||||
@ -19,15 +19,15 @@ selenium 缺乏对浏览器下载文件的有效管理,难以进行检测下
|
||||
- file_ur:文件 url
|
||||
- goal_path:存放路径,填写到文件夹,不填写文件名
|
||||
- rename:重命名文件,可不写扩展名,不输入则用网络文件原名
|
||||
- file_exists:若存在同名文件,可选择 'rename', 'overwrite', 'skip' 方式处理,若选择重命名,会在文件名后面添加序号
|
||||
- post_data:post 方式的数据,这个参数不为 None 时自动转成 post 方式
|
||||
- file_exists:若存在同名文件,可选择`'rename'`,`'overwrite'`,`'skip'`方式处理,若选择重命名,会在文件名后面添加序号
|
||||
- post_data:post 方式的数据,这个参数不为`None`时自动转成 post 方式
|
||||
- show_msg:是否显示下载信息和进度
|
||||
- show_errmsg:出现异常时是否显示和抛出
|
||||
- retry:重试次数,与页面对象的设置一致,默认 3 次
|
||||
- interval:重试间隔时间,与页面对象的设置一致,默认 2 秒
|
||||
- **kwargs;连接参数,s 模式专用,与 requests 的一致
|
||||
|
||||
返回:下载是否成功(bool)和状态信息(成功时信息为文件路径)的元组,跳过时第一位返回 None
|
||||
返回:下载是否成功(`bool`)和状态信息(成功时信息为文件路径)的元组,跳过时第一位返回 None
|
||||
|
||||
## 示例
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
目前设置功能只支持 Chrome 浏览器,如要使用其它浏览器,可使用 selenium 原生方法创建 driver,然后用 Drission 对象接收即可。
|
||||
|
||||
**注意:** 本库所有功能暂时只对 Chrome 做了完整测试。
|
||||
!> **注意:** 本库所有功能暂时只对 Chrome 做了完整测试。
|
||||
|
||||
```python
|
||||
from selenium import webdriver
|
||||
|
@ -1,22 +1,21 @@
|
||||
d 模式下的 DriverElement 对象可以对浏览器相应元素进行控制。
|
||||
d 模式下的`DriverElement`对象可以对浏览器相应元素进行控制。
|
||||
|
||||
# 元素操作方法
|
||||
|
||||
## click()
|
||||
|
||||
此方法用于点击元素。可以选择是否用 js 方式点击,可以在点击失败时自动重试。默认情况下,使用 selenium 原生的点击方法,如果重试超过限定时间,自动改用 js 方式点击。可通过 by_js 参数设置点击方式。
|
||||
此设计除了可保证点击成功,还可以用于检测页面上的遮罩层是否消失。遮罩层经常出现在 js 方式翻页的时候,它出现的时候会阻碍 selenium
|
||||
的原生点击,所以可以通过对其下面的元素不断重试点击,来判断遮罩层是否存在。当然,这个方法是否可行要看具体网页设计。
|
||||
此方法用于点击元素。可以选择是否用 js 方式点击,可以在点击失败时自动重试。默认情况下,使用 selenium 原生的点击方法,如果重试超过限定时间,自动改用 js 方式点击。可通过`by_js`参数设置点击方式。
|
||||
此设计除了可保证点击成功,还可以用于检测页面上的遮罩层是否消失。遮罩层经常出现在 js 方式翻页的时候,它出现的时候会阻碍 selenium 的原生点击,所以可以通过对其下面的元素不断重试点击,来判断遮罩层是否存在。当然,这个方法是否可行要看具体网页设计。
|
||||
而如果直接使用 js 进行点击,则可无视任何遮挡,只要元素在 DOM 内,就能点击得到,这样可以根据须要灵活地对元素进行操作。
|
||||
|
||||
注意:使用 js 方式点击时,是不会进行重试的。
|
||||
!> 注意:使用 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 点击
|
||||
@ -34,17 +33,17 @@ ele.click(by_js=True) # 无视遮罩层,直接用 js 点击下方元素
|
||||
|
||||
## click_at()
|
||||
|
||||
此方法用于带偏移量点击元素,偏移量相对于元素左上角坐标。不传入 x 或 y 值时点击元素中点。可选择是否用 js 方式点击,但不会进行重试。
|
||||
可用于点击一些奇怪的东西,比如用 before 表示的控件。
|
||||
此方法用于带偏移量点击元素,偏移量相对于元素左上角坐标。不传入`x`或`y`值时点击元素中点。可选择是否用 js 方式点击,但不会进行重试。
|
||||
可用于点击一些奇怪的东西,比如用伪元素表示的控件。
|
||||
点击的目标不一定在元素上,可以传入负值,或大于元素大小的值,点击元素附近的区域。向右和向下为正值,向左和向上为负值。
|
||||
|
||||
参数:
|
||||
|
||||
- x:相对元素左上角坐标的x轴偏移量
|
||||
- y:相对元素左上角坐标的y轴偏移量
|
||||
- by_js:是否用js点击
|
||||
- x:相对元素左上角坐标的 x 轴偏移量
|
||||
- y:相对元素左上角坐标的 y 轴偏移量
|
||||
- by_js:是否用 js 点击
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
# 点击元素右上方 50*50 的位置
|
||||
@ -65,7 +64,7 @@ ele.click_at()
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
ele.r_click()
|
||||
@ -75,14 +74,14 @@ ele.r_click()
|
||||
|
||||
## r_click_at()
|
||||
|
||||
此方法用于带偏移量右键点击元素,用法和 click_at() 相似,但没有 by_js 参数。
|
||||
此方法用于带偏移量右键点击元素,用法和`click_at()`相似,但没有`by_js`参数。
|
||||
|
||||
参数:
|
||||
|
||||
- x:相对元素左上角坐标的x轴偏移量
|
||||
- y:相对元素左上角坐标的y轴偏移量
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
# 点击距离元素左上角 50*50 的位置(位于元素内部)
|
||||
@ -93,11 +92,11 @@ ele.r_click_at(50, 50)
|
||||
|
||||
## input()
|
||||
|
||||
此方法用于向元素输入文本或组合键,也可用于输入文件路径到 input 元素(文件间用 \n 间隔)。可选择输入前是否清空元素。
|
||||
此方法用于向元素输入文本或组合键,也可用于输入文件路径到`input`元素(文件间用`\n`间隔)。可选择输入前是否清空元素。
|
||||
insure 参数为 `True` 时可自动确保输入正确。该功能是为了应对 selenium 原生输入在某些i情况下会失效的问题。但只能用于 input 元素且 `type` 为 `text` 的情况。 接收组合键的时候可接收
|
||||
selenium 的 `Keys` 对象的值。组合键要放在一个 `tuple` 中传入。
|
||||
注意:`insure` 为 `True` 时不能用于接收组合键。
|
||||
**Tips:** 有些文本框可以接收回车代替点击按钮,可以直接在文本末尾加上 '\n'。
|
||||
!> **注意:** `insure` 为 `True` 时不能用于接收组合键。
|
||||
?> **Tips:** 有些文本框可以接收回车代替点击按钮,可以直接在文本末尾加上`'\n'`。
|
||||
|
||||
参数:
|
||||
|
||||
@ -106,7 +105,7 @@ selenium 的 `Keys` 对象的值。组合键要放在一个 `tuple` 中传入。
|
||||
- insure:是否确保输入正确,不能用于输入组合键
|
||||
- timeout:尝试输入的超时时间,不指定则使用父页面的超时时间,只在 `insure_input` 参数为 `True` 时生效
|
||||
|
||||
返回:bool 类型,表示是否成功输入。`insure` 为 `False` 时始终返回 `True`。
|
||||
返回:`bool`类型,表示是否成功输入。`insure` 为 `False` 时始终返回 `True`。
|
||||
|
||||
```python
|
||||
# 输入文本
|
||||
@ -126,13 +125,13 @@ ele.input('D:\\test1.txt\nD:\\test2.txt')
|
||||
|
||||
## clear()
|
||||
|
||||
此方法用于清空元素文本,可使用确保清空的方式,若元素是不可编辑的,返回 None。
|
||||
此方法用于清空元素文本,可使用确保清空的方式,若元素是不可编辑的,返回`None`。
|
||||
|
||||
参数:
|
||||
|
||||
- insure_clear:是否确保清空。为 True 则用 input() 确保值变成 '',为 False 则用 selenium 元素 clear() 方法
|
||||
- insure_clear:是否确保清空。为`True`则用`input()`确保值变成`''`,为`False`则用 selenium 元素`clear()`方法
|
||||
|
||||
返回:bool,是否清空成功,不能清空的元素返回 None
|
||||
返回:`bool`,是否清空成功,不能清空的元素返回`None`
|
||||
|
||||
```python
|
||||
ele.clear()
|
||||
@ -140,7 +139,7 @@ ele.clear()
|
||||
|
||||
## run_script()
|
||||
|
||||
此方法用于对元素执行 js 代码,代码中用 arguments[0] 表示自己。
|
||||
此方法用于对元素执行 js 代码,代码中用`arguments[0]`表示自己。
|
||||
|
||||
参数:
|
||||
|
||||
@ -157,7 +156,7 @@ ele.run_script('arguments[0].click()')
|
||||
## wait_ele()
|
||||
|
||||
此方法用于等待当前元素的某个下级元素到达某种状态。
|
||||
调用此方法返回一个 ElementWaiter 对象,调用该对象方法实现各种方式的等待。
|
||||
调用此方法返回一个`ElementWaiter`对象,调用该对象方法实现各种方式的等待。
|
||||
|
||||
参数:
|
||||
|
||||
@ -198,7 +197,7 @@ ele1.wait_ele(ele2).hidden()
|
||||
参数:
|
||||
|
||||
- path:图片保持路径
|
||||
- filename:图片文件名,不传入时以元素 tag 标签命名
|
||||
- filename:图片文件名,不传入时以元素`tag`标签命名
|
||||
|
||||
返回:图片的完整路径
|
||||
|
||||
@ -217,7 +216,7 @@ path = ele.screenshot(r'D:\tmp', 'img_name')
|
||||
- prop: 属性名
|
||||
- value: 属性值
|
||||
|
||||
返回:bool,是否设置成功
|
||||
返回:`bool`,是否设置成功
|
||||
|
||||
```python
|
||||
ele.set_prop('value', 'Hello world!')
|
||||
@ -225,14 +224,14 @@ ele.set_prop('value', 'Hello world!')
|
||||
|
||||
## set_attr()
|
||||
|
||||
此方法用于设置元素 attribute 属性。
|
||||
此方法用于设置元素`attribute`属性。
|
||||
|
||||
参数:
|
||||
|
||||
- attr:属性名
|
||||
- value:属性值
|
||||
|
||||
返回:bool,是否设置成功
|
||||
返回:`bool`,是否设置成功
|
||||
|
||||
```python
|
||||
ele.set_attr('href', 'http://www.gitee.com')
|
||||
@ -240,13 +239,13 @@ ele.set_attr('href', 'http://www.gitee.com')
|
||||
|
||||
## remove_attr()
|
||||
|
||||
此方法用于删除元素 attribute 属性。
|
||||
此方法用于删除元素`attribute`属性。
|
||||
|
||||
参数:
|
||||
|
||||
- attr:属性名
|
||||
|
||||
返回:bool,是否删除成功
|
||||
返回:`bool`,是否删除成功
|
||||
|
||||
```python
|
||||
ele.remove_attr('href')
|
||||
@ -254,11 +253,11 @@ ele.remove_attr('href')
|
||||
|
||||
## submit()
|
||||
|
||||
此方法用于提交表单,若元素不在表单内,返回 None,否则返回 True。
|
||||
此方法用于提交表单,若元素不在表单内,返回`None`,否则返回`True`。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:True 或 None
|
||||
返回:`True`或`None`
|
||||
|
||||
```python
|
||||
ele.submit()
|
||||
@ -275,7 +274,7 @@ ele.submit()
|
||||
- speed:拖动的速度,传入 0 即瞬间到达
|
||||
- shake:是否随机抖动
|
||||
|
||||
返回:bool,表示是否拖动成功
|
||||
返回:`bool`,表示是否拖动成功
|
||||
|
||||
```python
|
||||
# 拖动当前元素到距离 50*50 的位置,速度为 100,不随机抖动
|
||||
@ -288,7 +287,7 @@ ele.drag(50, 50, 100, False)
|
||||
|
||||
参数:
|
||||
|
||||
- ele_or_loc: 另一个元素或坐标元组,接收元素时坐标是元素中点的坐标。可接收 selenium 的 WebElement 或本库的 DriverElement
|
||||
- ele_or_loc: 另一个元素或坐标元组,接收元素时坐标是元素中点的坐标。可接收 selenium 的`WebElement`或本库的`DriverElement`
|
||||
- speed: 拖动的速度,传入 0 即瞬间到达
|
||||
- shake: 是否随机抖动
|
||||
|
||||
@ -304,35 +303,10 @@ ele1.drag_to(ele2)
|
||||
ele1.drag_to((50, 50))
|
||||
```
|
||||
|
||||
## ~~scroll_to()~~
|
||||
|
||||
**注意:** 此方法将在下个版本删除,请使用 scroll 属性代替。
|
||||
|
||||
此方法用于按参数指示方式滚动元素中的滚动条。默认状态滚动到底端。
|
||||
|
||||
参数:
|
||||
|
||||
- mode:滚动方向,为字符串,可选范围见下文
|
||||
- pixel:滚动的像素
|
||||
|
||||
返回:None
|
||||
|
||||
mode 参数可在以下选项中选择:
|
||||
|
||||
- 'top':元素顶端,选择它时 pixel 参数无效
|
||||
- 'bottom':元素底端,选择它时 pixel 参数无效
|
||||
- 'half':元素中间位置,选择它时 pixel 参数无效
|
||||
- 'rightmost':元素最右边,垂直方向位置不变,选择它时 pixel 参数无效
|
||||
- 'leftmost':元素最左边,垂直方向位置不变,选择它时 pixel 参数无效
|
||||
- 'up':向上
|
||||
- 'down':向下
|
||||
- 'left':向左
|
||||
- 'right':向右
|
||||
|
||||
## scroll
|
||||
|
||||
此属性用于以某种方式滚动元素中的滚动条。
|
||||
调用此属性返回一个 Scroll 对象,调用该对象方法实现各种方式的滚动。
|
||||
调用此属性返回一个`Scroll`对象,调用该对象方法实现各种方式的滚动。
|
||||
|
||||
| 方法 | 参数说明 | 功能 |
|
||||
| :---------------: | :----------: | :------------------------------: |
|
||||
@ -363,14 +337,14 @@ ele.scroll.to_location(100, 300)
|
||||
|
||||
## hover()
|
||||
|
||||
此方法用于模拟鼠标悬停在元素上,可接受偏移量,偏移量相对于元素左上角坐标。不传入 x 或 y 值时悬停在元素中点。x 和 y 值可接受负值。
|
||||
此方法用于模拟鼠标悬停在元素上,可接受偏移量,偏移量相对于元素左上角坐标。不传入`x`或`y`值时悬停在元素中点。`x`和`y`值可接受负值。
|
||||
|
||||
参数:
|
||||
|
||||
- x:相对元素左上角坐标的x轴偏移量
|
||||
- y:相对元素左上角坐标的y轴偏移量
|
||||
- x:相对元素左上角坐标的 x 轴偏移量
|
||||
- y:相对元素左上角坐标的 y 轴偏移量
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
# 悬停在元素右上方 50*50 的位置
|
||||
@ -383,10 +357,10 @@ ele.hover(x=50)
|
||||
ele.hover()
|
||||
```
|
||||
|
||||
# Select 类
|
||||
# `Select`类
|
||||
|
||||
select 元素的操作较为复杂,因此专门做了一个类用于处理它。每个 DriverElement 都有 select 属性,如果是 select 元素,该属性是一个 Select 类,否则该属性为 False。
|
||||
select 元素要操作列表时,实际上是对这个 Select 对象进行操作。
|
||||
`select`元素的操作较为复杂,因此专门做了一个类用于处理它。每个`DriverElement`都有`select`属性,如果是`select`元素,该属性是一个`Select`类,否则该属性为`False`。
|
||||
`select`元素要操作列表时,实际上是对这个`Select`对象进行操作。
|
||||
|
||||
```python
|
||||
ele.select
|
||||
@ -396,7 +370,7 @@ ele.select
|
||||
|
||||
### is_multi
|
||||
|
||||
该属性表示当前 select 元素是否多选列表。
|
||||
该属性表示当前`select`元素是否多选列表。
|
||||
|
||||
```python
|
||||
ele.select.is_multi
|
||||
@ -404,7 +378,7 @@ ele.select.is_multi
|
||||
|
||||
### options
|
||||
|
||||
该属性以列表形式返回当前 select 元素下所有列表项元素对象,这些对象是 DriverElement。
|
||||
该属性以列表形式返回当前`select`元素下所有列表项元素对象,这些对象是`DriverElement`。
|
||||
|
||||
```python
|
||||
options = ele.select.options
|
||||
@ -430,13 +404,13 @@ options = ele.select.select.selected_options
|
||||
|
||||
### select()
|
||||
|
||||
该方法用于选定或取消选定下拉列表中子元素。Select 类的 \_\_call\_\_() 方法直接调用这个方法,因此可以直接`ele.select()`来替代这个方法。写法更直观。
|
||||
当元素是多选列表时,可以接受 list 或 tuple,同时选择多个项。
|
||||
该方法用于选定或取消选定下拉列表中子元素。Select 类的`__call__()`方法直接调用这个方法,因此可以直接`ele.select()`来替代这个方法。写法更直观。
|
||||
当元素是多选列表时,可以接受`list`或`tuple`,同时选择多个项。
|
||||
|
||||
参数:
|
||||
|
||||
- text_value_index:根据文本、值选或序号择选项,若允许多选,传入list或tuple可多选
|
||||
- para_type:参数类型,可选 'text'、'value'、'index',默认根据文本选择
|
||||
- text_value_index:根据文本、值选或序号择选项,若允许多选,传入`list`或`tuple`可多选
|
||||
- para_type:参数类型,可选`'text'`、`'value'`、`'index'`,默认根据文本选择
|
||||
- deselect:是否取消选择
|
||||
|
||||
返回:是否选择成功
|
||||
@ -463,12 +437,12 @@ ele.select(('index1', 'index2'), 'index')
|
||||
|
||||
### deselect()
|
||||
|
||||
此方法用于取消选定下拉列表中子元素。当元素是多选列表时,可以接受 list 或 tuple,同时取消选择多个项。
|
||||
此方法用于取消选定下拉列表中子元素。当元素是多选列表时,可以接受`list`或`tuple`,同时取消选择多个项。
|
||||
|
||||
参数:
|
||||
|
||||
- text_value_index:根据文本、值选或序号择选项,若允许多选,传入list或tuple可多选
|
||||
- para_type:参数类型,可选 'text'、'value'、'index'
|
||||
- text_value_index:根据文本、值选或序号择选项,若允许多选,传入`list`或`tuple`可多选
|
||||
- para_type:参数类型,可选` 'text'`、`'value'`、`'index'`
|
||||
|
||||
返回:是否选择成功
|
||||
|
||||
@ -500,7 +474,7 @@ ele.select.deselect(('index1', 'index2'), 'index')
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
ele.select.clear()
|
||||
@ -512,7 +486,7 @@ ele.select.clear()
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
ele.select.invert()
|
||||
|
@ -1,20 +1,20 @@
|
||||
在入门指南的快速上手一节,我们已经初步了解如何创建页面对象,本节进一步介绍更多功能。
|
||||
页面对象类型为 MixPage,通过 MixPage() 创建。
|
||||
可以通过指定配置信息创建须要的页面对象,如无界面的浏览器、是否加载插件、是否接管已打开的浏览器、设置 headers、设置代理等等。
|
||||
页面对象类型为`MixPage`,通过`MixPage()`创建。
|
||||
可以通过指定配置信息创建须要的页面对象,如无界面的浏览器、是否加载插件、是否接管已打开的浏览器、设置`headers`、设置代理等等。
|
||||
这些配置信息,可以通过几种方式设置。配置的详细用法后文再讲。本节先了解创建页面对象的几种方式。
|
||||
|
||||
# MixPage 类
|
||||
# `MixPage`类
|
||||
|
||||
MixPage 页面对象封装了常用的网页操作,并实现在两种模式之间的切换。
|
||||
MixPage 须控制一个 Drission 对象并使用其中的 WebDriver 或 Session 对象来实现。对浏览器或网络连接的操作。如没有传入,MixPage 会自己创建一个(使用传入的配置信息或从默认 ini 文件读取)。
|
||||
`MixPage`页面对象封装了常用的网页操作,并实现在两种模式之间的切换。
|
||||
`MixPage`须控制一个`Drission`对象并使用其中的`WebDriver`或`Session`对象来实现。对浏览器或网络连接的操作。如没有传入,`MixPage`会自己创建一个(使用传入的配置信息或从默认 ini 文件读取)。
|
||||
|
||||
初始化参数:
|
||||
|
||||
- mode:初始化时模式,'d' 或 's',默认为 'd'
|
||||
- mode:初始化时模式,`'d'`或`'s'`,默认为`'d'`
|
||||
- drission:Drission 对象,不传入时会自动创建
|
||||
- timeout:超时时间,s 模式时为连接时间,d 模式时为查找元素、处理弹出框、输入文本等超时时间
|
||||
- driver_options:浏览器设置,没传入drission 参数时会用这个设置新建 Drission 对象中的 WebDriver 对象,传入 False 则不创建
|
||||
- session_options:requests 设置,没传入 drission 参数时会用这个设置新建 Drission 对象中的 Session 对象,传入 False 则不创建
|
||||
- driver_options:浏览器设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`WebDriver`对象,传入`False`则不创建
|
||||
- session_options:requests 设置,没传入`drission`参数时会用这个设置新建`Drission`对象中的`Session`对象,传入`False`则不创建
|
||||
|
||||
# 直接创建
|
||||
|
||||
@ -31,18 +31,18 @@ page = MixPage('s')
|
||||
|
||||
# 通过配置信息创建
|
||||
|
||||
本库有两种管理配置信息的对象,分别是 DriverOptions 和 SessionOptions,对应 d 模式和 s 模式的配置。
|
||||
本库有两种管理配置信息的对象,分别是`DriverOptions`和`SessionOptions`,对应 d 模式和 s 模式的配置。
|
||||
须要时,可以创建相应的配置对象进行设置。
|
||||
|
||||
## DriverOptions 类
|
||||
## `DriverOptions`类
|
||||
|
||||
DriverOptions 用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
|
||||
DriverOptions 对象能实现链式操作。
|
||||
`DriverOptions`用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
|
||||
`DriverOptions`对象能实现链式操作。
|
||||
|
||||
初始化参数:
|
||||
|
||||
- read_file:是否从 ini 文件中读取配置信息
|
||||
- ini_path:ini 文件路径,为 None 则读取默认 ini 文件
|
||||
- ini_path:ini 文件路径,为`None`则读取默认 ini 文件
|
||||
|
||||
```python
|
||||
from Drission import MixPage
|
||||
@ -55,15 +55,15 @@ do = DriverOptions().set_mute().set_no_imgs()
|
||||
page = MixPage(driver_options=do)
|
||||
```
|
||||
|
||||
## SessionOptions 类
|
||||
## `SessionOptions`类
|
||||
|
||||
SessionOptions 用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
|
||||
SessionOptions 对象能实现链式操作。
|
||||
`SessionOptions`用于管理创建浏览器时的配置,浏览器创建后再修改这个配置是没有效果的。
|
||||
`SessionOptions`对象能实现链式操作。
|
||||
|
||||
初始化参数:
|
||||
|
||||
- read_file:是否从 ini 文件中读取配置信息
|
||||
- ini_path:ini 文件路径,为 None 则读取默认 ini 文件
|
||||
- ini_path:ini 文件路径,为`None`则读取默认 ini 文件
|
||||
|
||||
```python
|
||||
from Drission import MixPage
|
||||
@ -85,21 +85,21 @@ d 模式的配置和 s 模式的配置是可以同时使用的,不会互相影
|
||||
page = MixPage(mode='s', session_options=so, driver_options=do)
|
||||
```
|
||||
|
||||
# 传入 Drission 对象创建
|
||||
# 传入`Drission`对象创建
|
||||
|
||||
在入门指南的基本概念一节里,我们讲过 Drission 对象相当于驱动器的角色。事实上,上述两种方式,MixPage 都会自动创建一个 Drission 对象用于管理与网站或浏览器的连接,我们当然也可以手动创建并传入 MixPage。
|
||||
Drission 一般是不用手动创建的,要手动创建的时候,一般是用于i以下几种情况:
|
||||
在入门指南的基本概念一节里,我们讲过`Drission`对象相当于驱动器的角色。事实上,上述两种方式,`MixPage`都会自动创建一个`Drission`对象用于管理与网站或浏览器的连接,我们当然也可以手动创建并传入`MixPage`。
|
||||
`Drission`一般是不用手动创建的,要手动创建的时候,一般是用于i以下几种情况:
|
||||
|
||||
- 指定使用某个配置文件
|
||||
- 在不同 MixPage 间传递驱动器
|
||||
- 在不同`MixPage`间传递驱动器
|
||||
- 与 selenium 或 requests 原生代码拼接,用于兼容这两者的代码
|
||||
|
||||
## Drission 类
|
||||
## `Drission`类
|
||||
|
||||
初始化参数:
|
||||
|
||||
- driver_or_options:WebDriver 对象、DriverOptions 对象或 Options 对象。传入 False 时自动创建一个空配置对象。
|
||||
- session_or_options:Session 对象、SessionOptions 对象、Options 对象或设置字典。传入 False 时自动创建一个空配置对象。
|
||||
- driver_or_options:`WebDriver`对象、`DriverOptions`对象或`Options`对象。传入`False`时自动创建一个空配置对象。
|
||||
- session_or_options:`Session`对象、`SessionOptions`对象、`Options`对象或设置字典。传入`False`时自动创建一个空配置对象。
|
||||
- ini_path:要使用的 ini 文件的路径
|
||||
- proxy:初始化时设置代理
|
||||
|
||||
@ -114,7 +114,7 @@ page = MixPage(drission=d)
|
||||
|
||||
## 传递驱动器
|
||||
|
||||
多页面对象间共用驱动器,如多个 MixPage 控制一个浏览器:
|
||||
多页面对象间共用驱动器,如多个`MixPage`控制一个浏览器:
|
||||
|
||||
```python
|
||||
from Drission import MixPage
|
||||
@ -127,7 +127,7 @@ page2 = MixPage(drission=d)
|
||||
## 从 selenium 和 requests 代码传入
|
||||
|
||||
DrissionPage 的代码能和 selenium 及 requests 代码兼容,便于不同程序间的对接。
|
||||
只需把 driver 对象或 session 传入 Drission 对象即可。
|
||||
只需把`WebDriver`对象或`Session`传入`Drission`对象即可。
|
||||
|
||||
```python
|
||||
from selenium import webdriver
|
||||
@ -144,7 +144,7 @@ page.get('https://www.baidu.com')
|
||||
|
||||
## 用配置信息创建
|
||||
|
||||
因为 MixPage 创建时能直接接收配置信息,所以这个方法基本不需要用到,写出来只是表示有这个功能。
|
||||
因为`MixPage`创建时能直接接收配置信息,所以这个方法基本不需要用到,写出来只是表示有这个功能。
|
||||
|
||||
```python
|
||||
from DrissionPage.config import DriverOptions, SessionOptions
|
||||
|
@ -1,22 +1,20 @@
|
||||
为使浏览器设置更便利,本库扩展了 selenium.webdriver.chrome.options 的 Options 对象功能,创建了 DriverOptions 类,专门用于管理浏览器的启动配置。
|
||||
**注意:**
|
||||
为使浏览器设置更便利,本库扩展了`selenium.webdriver.chrome.options`的`Options`对象功能,创建了`DriverOptions`类,专门用于管理浏览器的启动配置。
|
||||
|
||||
- DriverOptions 仅用于管理启动配置,浏览器启动后再修改无效。
|
||||
- 若设置了 debugger_address 且浏览器未启动,则只有 arguments、driver_path、chrome_path 参数生效。
|
||||
- 若设置了 debugger_address 且接管已有浏览器,只有 driver_path 参数生效。
|
||||
!> **注意:** <br>
|
||||
1、`DriverOptions`仅用于管理启动配置,浏览器启动后再修改无效。 <br>
|
||||
2、若设置了`local_port`或`debugger_address`且浏览器未启动,则只有`arguments`、`driver_path`、`chrome_path`参数生效。 <br>
|
||||
3、若设置了`local_port`或`debugger_address`且接管已有浏览器,只有`driver_path`参数生效。
|
||||
|
||||
# DriverOptions 类
|
||||
|
||||
DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功能不在这里叙述,只介绍增加的功能。
|
||||
`DriverOptions`类继承自`Options 类`,保留了原来所有功能,原生功能不在这里叙述,只介绍增加的功能。
|
||||
对象创建时,可从配置文件中读取配置来进行初始化,不从文件读取则创建一个空配置对象。
|
||||
该类绝大部分方法都支持链式操作。
|
||||
|
||||
初始化参数:
|
||||
|
||||
- read_file:是否从默认 ini 文件中读取配置信息
|
||||
- ini_path:ini 文件路径,为 None 则读取默认 ini 文件
|
||||
|
||||
|
||||
- ini_path:ini 文件路径,为`None`则读取默认 ini 文件
|
||||
|
||||
## driver_path
|
||||
|
||||
@ -24,7 +22,7 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
## chrome_path
|
||||
|
||||
此属性返回 Chrome 浏览器启动文件路径,即 binary_location。
|
||||
此属性返回 Chrome 浏览器启动文件路径,即`binary_location`。
|
||||
为空时程序会根据注册表或系统路径查找。
|
||||
|
||||
## set_paths()
|
||||
@ -36,12 +34,12 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
- driver_path:chromedriver.exe 路径
|
||||
- chrome_path:chrome.exe 路径
|
||||
- local_port:本地端口号
|
||||
- debugger_address:调试浏览器地址,会覆盖 local_port 设置,例:127.0.0.1:9222
|
||||
- debugger_address:调试浏览器地址,会覆盖`local_port`设置,例:127.0.0.1:9222
|
||||
- download_path:下载文件路径
|
||||
- user_data_path:用户数据路径
|
||||
- cache_path:缓存路径
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## save()
|
||||
|
||||
@ -49,7 +47,7 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
参数:
|
||||
|
||||
- path:配置文件的路径,默认保存到当前读取的配置文件,传入 'default' 保存到默认 ini 文件
|
||||
- path:配置文件的路径,默认保存到当前读取的配置文件,传入`'default'`保存到默认 ini 文件
|
||||
|
||||
返回:配置文件绝对路径
|
||||
|
||||
@ -63,7 +61,7 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
## remove_argument()
|
||||
|
||||
此方法用于移除一个 argument 项。
|
||||
此方法用于移除一个`argument`项。
|
||||
|
||||
参数:
|
||||
|
||||
@ -91,12 +89,12 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
## set_argument()
|
||||
|
||||
此方法用于设置浏览器配置的 argument 属性。
|
||||
此方法用于设置浏览器配置的`argument`属性。
|
||||
|
||||
参数:
|
||||
|
||||
- arg:属性名
|
||||
- value:属性值,有值的属性传入值,没有的传入bool 类型表示开关
|
||||
- value:属性值,有值的属性传入值,没有的传入`bool`类型表示开关
|
||||
|
||||
返回:当前对象
|
||||
|
||||
@ -118,7 +116,7 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
参数:
|
||||
|
||||
- on_off:bool 类型,表示开或关
|
||||
- on_off:`bool`类型,表示开或关
|
||||
|
||||
返回:None
|
||||
|
||||
@ -128,9 +126,9 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
参数:
|
||||
|
||||
- on_off:bool 类型,表示开或关
|
||||
- on_off:`bool`类型,表示开或关
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_mute()
|
||||
|
||||
@ -138,7 +136,7 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
参数:
|
||||
|
||||
- on_off:bool 类型,表示开或关
|
||||
- on_off:`bool`类型,表示开或关
|
||||
|
||||
返回:None
|
||||
|
||||
@ -150,7 +148,7 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
- proxy: 代理网址和端口,如 127.0.0.1:1080
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_user_agent()
|
||||
|
||||
@ -160,11 +158,11 @@ DriverOptions 类继承自 Options 类,保留了原来所有功能,原生功
|
||||
|
||||
- user_agent:user agent文本
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## as_dict()
|
||||
|
||||
该方法以 dict 方式返回所有配置信息。
|
||||
该方法以`dict`方式返回所有配置信息。
|
||||
|
||||
参数:无
|
||||
|
||||
|
@ -1,37 +1,37 @@
|
||||
SessionOptions 对象用于管理 Session 对象连接配置。
|
||||
其使用逻辑与 DriverOptions 相似。
|
||||
`SessionOptions`对象用于管理`Session`对象连接配置。
|
||||
其使用逻辑与`DriverOptions`相似。
|
||||
|
||||
**注意:** SessionOptions 仅用于管理启动配置,程序启动后再修改无效。
|
||||
!> **注意:** `SessionOptions`仅用于管理启动配置,程序启动后再修改无效。
|
||||
|
||||
# SessionOptions 类
|
||||
# `SessionOptions`类
|
||||
|
||||
SessionOptions 对象创建时默认读取默认 ini 文件配置信息,也可手动设置所需信息。
|
||||
`SessionOptions`对象创建时默认读取默认 ini 文件配置信息,也可手动设置所需信息。
|
||||
该类的方法支持链式操作。
|
||||
|
||||
初始化参数:
|
||||
|
||||
- read_file:是否从默认 ini 文件中读取配置信息
|
||||
- ini_path:ini 文件路径,为 None 则读取默认 ini 文件
|
||||
- ini_path:ini 文件路径,为`None`则读取默认 ini 文件
|
||||
|
||||
|
||||
|
||||
## headers
|
||||
|
||||
该属性返回 headers 设置信息,可传入字典赋值。
|
||||
该属性返回`headers`设置信息,可传入字典赋值。
|
||||
|
||||
## set_headers()
|
||||
|
||||
该方法与 headers 参数赋值功能一致。
|
||||
该方法与`headers`参数赋值功能一致。
|
||||
|
||||
参数:
|
||||
|
||||
- headers:headers 字典
|
||||
- headers:`headers`字典
|
||||
|
||||
返回:当前对象
|
||||
|
||||
## set_a_header()
|
||||
|
||||
该方法用于设置 headers 中的一个项。
|
||||
该方法用于设置`headers`中的一个项。
|
||||
|
||||
参数:
|
||||
|
||||
@ -56,7 +56,7 @@ print(so.headers)
|
||||
|
||||
## remove_a_header()
|
||||
|
||||
此方法用于从 headers 中移除一个设置项。
|
||||
此方法用于从`headers`中移除一个设置项。
|
||||
|
||||
参数:
|
||||
|
||||
@ -66,8 +66,8 @@ print(so.headers)
|
||||
|
||||
## cookies
|
||||
|
||||
此属性返回 cookies 设置信息,可赋值。
|
||||
可接收 dict、list、tuple、str、RequestsCookieJar 等格式的信息。
|
||||
此属性返回`cookies`设置信息,可赋值。
|
||||
可接收`dict`、`list`、`tuple`、`str`、`RequestsCookieJar`等格式的信息。
|
||||
|
||||
## proxies
|
||||
|
||||
@ -76,49 +76,49 @@ print(so.headers)
|
||||
|
||||
## set_proxies()
|
||||
|
||||
此方法与 proxies 属性赋值功能一致。
|
||||
此方法与`proxies`属性赋值功能一致。
|
||||
|
||||
参数:
|
||||
|
||||
- dict 格式的代理参数
|
||||
- `dict`格式的代理参数
|
||||
|
||||
返回:当前对象
|
||||
|
||||
## auth
|
||||
|
||||
此属性用于返回和设置 auth 参数,接收 tuple 类型参数。
|
||||
此属性用于返回和设置`auth`参数,接收`tuple`类型参数。
|
||||
|
||||
## hooks
|
||||
|
||||
此属性用于返回和设置 hooks 参数,接收 dict 类型参数。
|
||||
此属性用于返回和设置`hooks`参数,接收`dict`类型参数。
|
||||
|
||||
## params
|
||||
|
||||
此属性用于返回和设置 params 参数,接收 dict 类型参数。
|
||||
此属性用于返回和设置`params`参数,接收`dict`类型参数。
|
||||
|
||||
## verify
|
||||
|
||||
此属性用于返回和设置 verify 参数,接收 bool 类型参数。
|
||||
此属性用于返回和设置`verify`参数,接收`bool`类型参数。
|
||||
|
||||
## cert
|
||||
|
||||
此属性用于返回和设置 cert 参数,接收 str 或 tuple 类型参数。
|
||||
此属性用于返回和设置`cert`参数,接收`str`或`tuple`类型参数。
|
||||
|
||||
## adapters
|
||||
|
||||
此属性用于返回和设置 adapters 参数。
|
||||
此属性用于返回和设置`adapters`参数。
|
||||
|
||||
## stream
|
||||
|
||||
此属性用于返回和设置 stream 参数,接收 bool 类型参数。
|
||||
此属性用于返回和设置`stream`参数,接收`bool`类型参数。
|
||||
|
||||
## trust_env
|
||||
|
||||
此属性用于返回和设置 trust_env 参数,接收 bool 类型参数。
|
||||
此属性用于返回和设置`trust_env`参数,接收`bool`类型参数。
|
||||
|
||||
## max_redirects
|
||||
|
||||
此属性用于返回和设置 max_redirects 参数,接收 int 类型参数。
|
||||
此属性用于返回和设置`max_redirects`参数,接收`int`类型参数。
|
||||
|
||||
## save()
|
||||
|
||||
@ -126,7 +126,7 @@ print(so.headers)
|
||||
|
||||
参数:
|
||||
|
||||
- path:配置文件的路径,默认保存到当前读取的配置文件,传入 'default' 保存到默认 ini 文件
|
||||
- path:配置文件的路径,默认保存到当前读取的配置文件,传入`'default'`保存到默认 ini 文件
|
||||
|
||||
返回:配置文件绝对路径
|
||||
|
||||
@ -140,7 +140,7 @@ print(so.headers)
|
||||
|
||||
## as_dict()
|
||||
|
||||
该方法以 dict 方式返回所有配置信息。
|
||||
该方法以`dict`方式返回所有配置信息。
|
||||
|
||||
参数:无
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
本库使用 ini 文件记录浏览器或 Session 对象的启动配置。便于配置复用,免于在代码中加入繁琐的配置信息。
|
||||
默认情况下,MixPage 对象启动时自动加载文件中的配置信息。
|
||||
本库使用 ini 文件记录浏览器或`Session`对象的启动配置。便于配置复用,免于在代码中加入繁琐的配置信息。
|
||||
默认情况下,`MixPage`对象启动时自动加载文件中的配置信息。
|
||||
也可以在默认配置基础上用简单的方法再次修改,再保存到 ini 文件。
|
||||
也可以保存多个 ini 文件,按不同项目须要调用。
|
||||
**注意:**
|
||||
|
||||
- ini 文件仅用于管理启动配置,浏览器或 Session 创建后再修改 ini 文件内容是没有效果的。
|
||||
- ini 文件仅用于管理启动配置,浏览器或`Session`创建后再修改 ini 文件内容是没有效果的。
|
||||
- 如果是接管已打开的浏览器,这些设置也没有用。
|
||||
- 每次升级本库,ini 文件都会被重置,可另存到其它路径以免重置。
|
||||
|
||||
# ini 文件内容
|
||||
|
||||
ini 文件默认拥有三部分配置:paths、chrome_options、session_options,初始内容如下。
|
||||
ini 文件默认拥有三部分配置:`paths`、`chrome_options`、`session_options`,初始内容如下。
|
||||
|
||||
```
|
||||
[paths]
|
||||
@ -75,7 +75,7 @@ headers = {
|
||||
|
||||
# 使用默认配置文件启动
|
||||
|
||||
## 使用 MixPage 对象自动加载
|
||||
## 使用`MixPage`对象自动加载
|
||||
|
||||
这是默认启动方式。
|
||||
|
||||
@ -100,7 +100,7 @@ page = MixPaage(driver_options=do, session_option=so)
|
||||
|
||||
## 使用 Drission 对象加载
|
||||
|
||||
这种方式一般用于加载非默认配置文件,或须在多个页面对象间传递 Drission 对象的情况。
|
||||
这种方式一般用于加载非默认配置文件,或须在多个页面对象间传递`Drission`对象的情况。
|
||||
|
||||
```python
|
||||
from DrissionPage import MixPage, Drission
|
||||
@ -151,7 +151,7 @@ set_headless(True)
|
||||
|
||||
- ini_path:ini 文件路径,默认读取默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_paths()
|
||||
|
||||
@ -170,7 +170,7 @@ set_headless(True)
|
||||
- ini_path:要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
- check_version:是否检查 chromedriver 和 Chrome 是否匹配
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_headless()
|
||||
|
||||
@ -178,10 +178,10 @@ set_headless(True)
|
||||
|
||||
参数:
|
||||
|
||||
- on_off:bool 类型,表示开或关
|
||||
- ini_path: 要修改的ini文件路径,默认设置默认 ini 文件
|
||||
- on_off:`bool`类型,表示开或关
|
||||
- ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_no_imgs()
|
||||
|
||||
@ -189,10 +189,10 @@ set_headless(True)
|
||||
|
||||
参数:
|
||||
|
||||
- on_off:bool 类型,表示开或关
|
||||
- ini_path: 要修改的ini文件路径,默认设置默认 ini 文件
|
||||
- on_off:`bool`类型,表示开或关
|
||||
- ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_mute()
|
||||
|
||||
@ -200,10 +200,10 @@ set_headless(True)
|
||||
|
||||
参数:
|
||||
|
||||
- on_off:bool 类型,表示开或关
|
||||
- ini_path: 要修改的ini文件路径,默认设置默认 ini 文件
|
||||
- on_off:`bool`类型,表示开或关
|
||||
- ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_proxy()
|
||||
|
||||
@ -212,9 +212,9 @@ set_headless(True)
|
||||
参数:
|
||||
|
||||
- proxy: 代理网址和端口,如 127.0.0.1:1080
|
||||
- ini_path: 要修改的ini文件路径,默认设置默认 ini 文件
|
||||
- ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_user_agent()
|
||||
|
||||
@ -223,9 +223,9 @@ set_headless(True)
|
||||
参数:
|
||||
|
||||
- user_agent:user agent文本
|
||||
- ini_path: 要修改的ini文件路径,默认设置默认 ini 文件
|
||||
- ini_path: 要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## set_argument()
|
||||
|
||||
@ -234,21 +234,21 @@ set_headless(True)
|
||||
参数:
|
||||
|
||||
- arg:属性名
|
||||
- value:属性值,有值的属性传入值。没有的传入 bool 表示开或关
|
||||
- value:属性值,有值的属性传入值。没有的传入`bool`表示开或关
|
||||
- ini_path:要修改的 ini 文件路径,默认设置默认 ini 文件
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## check_driver_version()
|
||||
|
||||
该方法用于检查传入的chrome和chromedriver是否匹配。
|
||||
该方法用于检查传入的 chrome 和 chromedriver 是否匹配。
|
||||
|
||||
参数:
|
||||
|
||||
- driver_path:chromedriver.exe路径
|
||||
- chrome_path:chrome.exe路径
|
||||
- driver_path:chromedriver.exe 路径
|
||||
- chrome_path:chrome.exe 路径
|
||||
|
||||
返回:bool 类型,表示是否匹配
|
||||
返回:`bool`类型,表示是否匹配
|
||||
|
||||
## get_match_drive()
|
||||
|
||||
@ -262,4 +262,4 @@ set_headless(True)
|
||||
- show_msg:是否打印信息
|
||||
- check_version:是否检查版本匹配
|
||||
|
||||
返回:成功返回 driver 路径,失败返回 None
|
||||
返回:成功返回 driver 路径,失败返回`None`
|
||||
|
@ -2,6 +2,6 @@
|
||||
因此,本库提供了一些方法简化其使用。
|
||||
|
||||
- 使用 ini 文件记录常用配置,使配置便于复用,无须在代码中编写繁琐的配置。
|
||||
- 使用 DriverOptions 对象管理浏览器配置,它继承自 selenium 原生的 Options 对象,加入更多便捷的功能。
|
||||
- 增加专门用于管理连接配置的 SessionOptions。
|
||||
- 使用`DriverOptions`对象管理浏览器配置,它继承自 selenium 原生的`Options`对象,加入更多便捷的功能。
|
||||
- 增加专门用于管理连接配置的`SessionOptions`。
|
||||
- 提供 easy_set 方法,专门用于对 ini 文件中常用配置进行管理,简化配置操作。
|
@ -1,5 +1,5 @@
|
||||
DrissionPage 代码可无缝拼接 selenium 及 requests 代码。既可直接使用 selenium 的 WebDriver 对象,也可导出自身的 WebDriver 给 selenium 代码使用。requests 的
|
||||
Session 对象也可直接传递。便于已有项目的迁移。
|
||||
DrissionPage 代码可无缝拼接 selenium 及 requests 代码。既可直接使用 selenium 的`WebDriver`对象,也可导出自身的`WebDriver`给 selenium 代码使用。requests 的
|
||||
`Session`对象也可直接传递。便于已有项目的迁移。
|
||||
|
||||
# selenium 转 DrissionPage
|
||||
|
||||
|
@ -23,7 +23,7 @@ so = SessionOptions(read_file=False)
|
||||
page = MixPage(driver_options=do, session_options=so)
|
||||
```
|
||||
|
||||
**注意** ,这个时候 Drission 的两个参数都要输入内容,如果其中一个不需要设置可以输入 False,如:
|
||||
**注意** ,这个时候`Drission`的两个参数都要输入内容,如果其中一个不需要设置可以输入`False`,如:
|
||||
|
||||
```python
|
||||
drission = Drission(driver_or_options=do, session_or_options=False)
|
||||
@ -48,5 +48,5 @@ page.get('https://www.baidu.com')
|
||||
|
||||
注意以下两点,程序就会跳过读取 ini 文件:
|
||||
|
||||
- DriverOptions() 里要设置 read_file=False
|
||||
- 如果不传入某个模式的配置(示例中为 s 模式),要在 MixPage() 初始化是设置对应参数为 False
|
||||
- `DriverOptions()`里要设置`read_file=False`
|
||||
- 如果不传入某个模式的配置(示例中为 s 模式),要在`MixPage()`初始化是设置对应参数为`False`
|
||||
|
@ -30,7 +30,7 @@ d 模式的元素还有专门用于处理 shadow dom 的`shadow_root`属性。
|
||||
</html>
|
||||
```
|
||||
|
||||
假设 page 为以上页面的 MixPage 对象,我们可以用这些方法获取其中的元素:
|
||||
假设 page 为以上页面的`MixPage`对象,我们可以用这些方法获取其中的元素:
|
||||
|
||||
```python
|
||||
# 获取 id 为 one 的元素
|
||||
@ -211,13 +211,13 @@ ele1.click()
|
||||
|
||||
**匹配模式** 指字符串是否完全匹配,有以下两种:
|
||||
|
||||
## =
|
||||
## `=`
|
||||
|
||||
表示精确匹配,匹配完全符合的文本或属性。
|
||||
|
||||
|
||||
|
||||
## :
|
||||
## `:`
|
||||
|
||||
表示模糊匹配,匹配含有某个字符串的文本或属性。
|
||||
|
||||
@ -225,7 +225,7 @@ ele1.click()
|
||||
|
||||
**关键字** 是出现在定位语句最左边,用于指明该语句以哪种方式去查找元素,有以下这些:
|
||||
|
||||
## \#
|
||||
## `#`
|
||||
|
||||
表示`id`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。
|
||||
|
||||
@ -239,7 +239,7 @@ ele2 = ele1.ele('#:ele_id')
|
||||
|
||||
|
||||
|
||||
## .
|
||||
## `.`
|
||||
|
||||
表示`class`属性,只在语句最前面且单独使用时生效,可配合`=`或`:`。
|
||||
|
||||
@ -253,7 +253,7 @@ ele2 = ele1.ele('.:ele_class')
|
||||
|
||||
|
||||
|
||||
## @
|
||||
## `@`
|
||||
|
||||
表示某个属性,只匹配一个属性。
|
||||
`@`关键字只有一个简单功能,就是匹配`@`后面的内容,不再对后面的字符串进行解析。因此即使后面的字符串也存在`@`或`@@`,也作为要匹配的内容对待。
|
||||
@ -277,7 +277,7 @@ ele2 = ele1.ele('@email=abc@def.com')
|
||||
|
||||
|
||||
|
||||
## @@
|
||||
## `@@`
|
||||
|
||||
表示某个属性,多属性匹配时使用,个数不限。还能匹配要忽略的元素,匹配文本时也和`@`不一样。
|
||||
`@@`后跟 - 时,表示 not。如:
|
||||
@ -305,7 +305,7 @@ ele2 = ele1.ele('@@-name:ele_name')
|
||||
|
||||
|
||||
|
||||
## text
|
||||
## `text`
|
||||
|
||||
要匹配的文本,查询字符串如开头没有任何关键字,也表示根据传入的文本作模糊查找。
|
||||
如果元素内有多个直接的文本节点,精确查找时可匹配所有文本节点拼成的字符串,模糊查找时可匹配每个文本节点。
|
||||
@ -329,7 +329,7 @@ ele2 = page.ele('text:text:')
|
||||
|
||||
|
||||
|
||||
## text()
|
||||
## `text()`
|
||||
|
||||
作为查找属性时使用的文本关键字,必须与`@`或`@@`配合使用。
|
||||
与`@`配合和与`@@`配合使用时,`text()`的意义是有差别的。
|
||||
@ -359,7 +359,7 @@ ele = page.ele('@@text():some text')
|
||||
|
||||
|
||||
|
||||
## tag
|
||||
## `tag`
|
||||
|
||||
表示元素的标签,只在语句最前面且单独使用时生效,可与`@`或`@@`配合使用。`tag:`与`tag=`效果一致。
|
||||
|
||||
@ -387,7 +387,7 @@ ele2 = ele1.ele('tag:div@@text():text')
|
||||
|
||||
|
||||
|
||||
## css
|
||||
## `css`
|
||||
|
||||
表示用 css selector 方式查找元素。`css:`与`css=`效果一致。
|
||||
|
||||
@ -401,7 +401,7 @@ ele2 = ele1.ele('css:>div')
|
||||
|
||||
|
||||
|
||||
## xpath
|
||||
## `xpath`
|
||||
|
||||
表示用 xpath 方式查找元素。`xpath:`与`xpath=`效果一致。
|
||||
该方法支持完整的 xpath 语法,能使用 xpath 直接获取元素属性,selenium 不支持这种用法。
|
||||
@ -417,7 +417,7 @@ ele2 = ele1.ele('xpath://div')
|
||||
txt = ele1.ele('xpath://div/@class')
|
||||
```
|
||||
|
||||
**Tips:**
|
||||
?> **Tips:** <br>
|
||||
查找元素的后代时,selenium 原生代码要求 xpath 前面必须加`.`,否则会变成在全个页面中查找。笔者觉得这个设计是画蛇添足,既然已经通过元素查找了,自然应该只查找这个元素内部的元素。所以,用 xpath 在元素下查找时,最前面`//`或`/`前面的`.`可以省略。
|
||||
|
||||
|
||||
|
@ -1,9 +1,8 @@
|
||||
获取到须要的页面元素后,可以使用元素对象获取元素的信息。
|
||||
|
||||
本库有三种元素对象,分别是 DriverElement、ShadowRootElement、SessionElement,前两者是 d 模式下通过浏览器页面元素生成,后者由静态文本生成。DriverElement 和
|
||||
SessionElement 的基本属性一致。
|
||||
本库有三种元素对象,分别是`DriverElement`、`ShadowRootElement`、`SessionElement`,前两者是 d 模式下通过浏览器页面元素生成,后者由静态文本生成。`DriverElement`和`SessionElement`的基本属性一致。
|
||||
|
||||
ShadowRootElement 由于是 shadow dom 元素,属性比较其余两种少,下文单独介绍。
|
||||
`ShadowRootElement`由于是 shadow dom 元素,属性比较其余两种少,下文单独介绍。
|
||||
|
||||
# 示例
|
||||
|
||||
@ -31,7 +30,7 @@ a 车载应用 https://gitee.com/explore/vehicle
|
||||
|
||||
# 两种模式共有属性
|
||||
|
||||
假设 ele 为以下 div 元素的对象:
|
||||
假设`ele`为以下`div`元素的对象:
|
||||
|
||||
```html
|
||||
<div id="div1">Hello World!
|
||||
@ -42,7 +41,7 @@ a 车载应用 https://gitee.com/explore/vehicle
|
||||
|
||||
## html
|
||||
|
||||
此属性返回元素的 outerHTML 文本。
|
||||
此属性返回元素的`outerHTML`文本。
|
||||
|
||||
```python
|
||||
html = ele.html
|
||||
@ -58,7 +57,7 @@ html = ele.html
|
||||
|
||||
## inner_html
|
||||
|
||||
此属性返回元素的 innerHTML 文本。
|
||||
此属性返回元素的`innerHTML`文本。
|
||||
|
||||
```python
|
||||
inner_html = ele.inner_html
|
||||
@ -115,7 +114,7 @@ Hello World!
|
||||
|
||||
## texts()
|
||||
|
||||
此方法返回元素内所有直接子节点的文本,包括元素和文本节点。 它有一个参数 text_node_only,为True 时则只获取只返回文本节点。这个方法适用于获取文本节点和元素节点混排的情况。
|
||||
此方法返回元素内所有直接子节点的文本,包括元素和文本节点。 它有一个参数`text_node_only`,为`True`时则只获取只返回文本节点。这个方法适用于获取文本节点和元素节点混排的情况。
|
||||
|
||||
参数:
|
||||
|
||||
@ -150,8 +149,8 @@ attrs = ele.attrs
|
||||
|
||||
## attr()
|
||||
|
||||
此方法返回元素某个 attribute 属性值。它接收一个字符串参数 attr,返回该属性值文本,无该属性时返回 None。
|
||||
此属性返回的 src、href 属性为已补充完整的路径。text 属性为已格式化文本,innerText 属性为未格式化文本。
|
||||
此方法返回元素某个`attribute`属性值。它接收一个字符串参数`attr`,返回该属性值文本,无该属性时返回`None`。
|
||||
此属性返回的`src`、`href`属性为已补充完整的路径。`text`属性为已格式化文本,`innerText`属性为未格式化文本。
|
||||
|
||||
参数:
|
||||
|
||||
@ -166,13 +165,13 @@ ele_id = ele.attr('id')
|
||||
|
||||
## link
|
||||
|
||||
此方法返回元素的 href 属性或 src 属性,没有这两个属性则返回 None。
|
||||
此方法返回元素的 href 属性或 src 属性,没有这两个属性则返回`None`。
|
||||
|
||||
```html
|
||||
<a href='http://www.baidu.com'>百度</a>
|
||||
```
|
||||
|
||||
假设 a_ele 为以上元素的对象:
|
||||
假设`a_ele`为以上元素的对象:
|
||||
|
||||
```python
|
||||
link = a_ele.link
|
||||
@ -183,8 +182,8 @@ link = a_ele.link
|
||||
|
||||
此属性返回元素所在的页面对象。
|
||||
|
||||
- 由页面对象生成的元素返回该页面对象,如 MixPage,DriverPage,SessionPage
|
||||
- 由 html 文本直接生成的 SessionElement 的 page 属性为 None。
|
||||
- 由页面对象生成的元素返回该页面对象,如`MixPage`,`DriverPage`,`SessionPage`
|
||||
- 由 html 文本直接生成的`SessionElement`的`page`属性为`None`。
|
||||
|
||||
```python
|
||||
page = ele.page
|
||||
@ -193,7 +192,7 @@ page = ele.page
|
||||
## inner_ele
|
||||
|
||||
此属性返回被当前元素包装的对应模式原本的元素对象。
|
||||
d 模式包装的是一个 selenium 的 WebElement 对象,s 模式包装的是一个 lxml 的 HtmlElement 对象。
|
||||
d 模式包装的是一个 selenium 的`WebElement`对象,s 模式包装的是一个 lxml 的`HtmlElement`对象。
|
||||
获取该对象,可直接使用该对象以该库的原生代码来执行须要的操作,便于不同项目的对接,及使用本库没有封装的功能。
|
||||
|
||||
```python
|
||||
@ -223,11 +222,11 @@ css = ele.css_path
|
||||
|
||||
## is_valid()
|
||||
|
||||
此方法返回当前元素是否可用。SessionElement 始终返回 True,DriverElement 视乎元素是否还在 DOM 内返回布尔值。
|
||||
此方法返回当前元素是否可用。`SessionElement`始终返回`True`,`DriverElement`视乎元素是否还在 DOM 内返回布尔值。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:布尔值
|
||||
返回:`bool`类型
|
||||
|
||||
```python
|
||||
is_valid = ele.is_valid()
|
||||
@ -255,7 +254,7 @@ loc = ele.location
|
||||
|
||||
## pseudo_before
|
||||
|
||||
此属性以文本形式返回当前元素的 ::before 伪元素内容。
|
||||
此属性以文本形式返回当前元素的`::before`伪元素内容。
|
||||
|
||||
```python
|
||||
before_txt = ele.pseudo_before
|
||||
@ -263,7 +262,7 @@ before_txt = ele.pseudo_before
|
||||
|
||||
## pseudo_after
|
||||
|
||||
此属性以文本形式返回当前元素的 ::after 伪元素内容。
|
||||
此属性以文本形式返回当前元素的`::after`伪元素内容。
|
||||
|
||||
```python
|
||||
after_txt = ele.pseudo_after
|
||||
@ -271,7 +270,7 @@ after_txt = ele.pseudo_after
|
||||
|
||||
## style()
|
||||
|
||||
该方法返回元素 css 样式属性值,可获取伪元素的属性。它有两个参数,style 参数输入样式属性名称,pseudo_ele 参数输入伪元素名称,省略则获取普通元素的 css 样式属性。
|
||||
该方法返回元素 css 样式属性值,可获取伪元素的属性。它有两个参数,`style`参数输入样式属性名称,`pseudo_ele`参数输入伪元素名称,省略则获取普通元素的 css 样式属性。
|
||||
|
||||
参数:
|
||||
|
||||
@ -290,7 +289,7 @@ prop = ele.style('content', 'after')
|
||||
|
||||
## prop()
|
||||
|
||||
此方法返回 property 属性值。它接收一个字符串参数,返回该参数的属性值。
|
||||
此方法返回`property`属性值。它接收一个字符串参数,返回该参数的属性值。
|
||||
|
||||
参数:
|
||||
|
||||
@ -304,7 +303,7 @@ prop = ele.prop('value')
|
||||
|
||||
## select
|
||||
|
||||
此属性返回 `select` 元素用于处理下拉列表的 Select 类(“元素操作”章节说明),非下拉列表元素返回 False。
|
||||
此属性返回 `select` 元素用于处理下拉列表的 Select 类(“[元素操作](元素操作.md)”章节说明),非下拉列表元素返回`False`。
|
||||
|
||||
## is_selected()
|
||||
|
||||
@ -342,21 +341,21 @@ enable = ele.is_enabled()
|
||||
displayed = ele.is_displayed()
|
||||
```
|
||||
|
||||
# ShadowRootElement 属性与方法
|
||||
# `ShadowRootElement`属性与方法
|
||||
|
||||
本库把 shadow dom 的 root 看作一个元素处理,可以获取属性,也可以执行其下级的查找,但其属性比较少。有如下这些:
|
||||
本库把 shadow dom 的`root`看作一个元素处理,可以获取属性,也可以执行其下级的查找,但其属性比较少。有如下这些:
|
||||
|
||||
## tag
|
||||
|
||||
此属性返回元素标签名,即 'shadow-root'。
|
||||
此属性返回元素标签名,即`'shadow-root'`。
|
||||
|
||||
## html
|
||||
|
||||
此属性返回 shadow_root 的 html 文本,由 `<shadow_root></shadow_root>` 标签包裹。
|
||||
此属性返回`shadow_root`的 html 文本,由`<shadow_root></shadow_root>` 标签包裹。
|
||||
|
||||
## inner_html
|
||||
|
||||
此属性返回 shadow_root 内部的 html 文本。
|
||||
此属性返回`shadow_root`内部的 html 文本。
|
||||
|
||||
## page
|
||||
|
||||
@ -364,17 +363,17 @@ displayed = ele.is_displayed()
|
||||
|
||||
## inner_ele
|
||||
|
||||
此属性返回对象中保存的 shadow-root 元素。
|
||||
此属性返回对象中保存的`shadow-root`元素。
|
||||
|
||||
## parent_ele
|
||||
|
||||
这是 ShadowRootElement 独有的属性,返回它所依附的普通元素对象。
|
||||
这是`ShadowRootElement`独有的属性,返回它所依附的普通元素对象。
|
||||
|
||||
## is_enabled()
|
||||
|
||||
与 DriverElement 一致。
|
||||
与`DriverElement`一致。
|
||||
|
||||
## is_valid()
|
||||
|
||||
与 DriverElement 一致。
|
||||
与`DriverElement`一致。
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
## cookies
|
||||
|
||||
此属性以`dict`方式返回当前页面所使用的 cookies。
|
||||
d 模式只返回当前标签页的 cookies,s 模式则只返回当前访问的 url 的 cookies。
|
||||
d 模式只返回当前标签页的 cookies,s 模式则只返回当前访问的 url 的`cookies`。
|
||||
|
||||
## get_cookies()
|
||||
|
||||
@ -33,10 +33,10 @@ d 模式只返回当前标签页的 cookies,s 模式则只返回当前访问
|
||||
|
||||
参数:
|
||||
|
||||
- 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
|
||||
@ -101,14 +101,14 @@ page.retry_interval = 1.5
|
||||
## url_available
|
||||
|
||||
此属性以布尔值返回当前链接是否可用。
|
||||
s 模式下根据 Response 对象的`status_code`判断。
|
||||
s 模式下根据`Response`对象的`status_code`判断。
|
||||
d 模式根据`check_page()`方法返回值判断。
|
||||
|
||||
# s 模式独有属性
|
||||
|
||||
## response
|
||||
|
||||
此属性为 s 模式请求网站后生成的 Response 对象,本库没实现的功能可直接获取此属性调用 requests 库的原生功能。
|
||||
此属性为 s 模式请求网站后生成的`Response`对象,本库没实现的功能可直接获取此属性调用 requests 库的原生功能。
|
||||
|
||||
```python
|
||||
# 打印连接状态
|
||||
|
@ -52,15 +52,15 @@ page.get(url, headers=headers, cookies=cookies, proxies=proxies)
|
||||
|
||||
# post()
|
||||
|
||||
该方法是用 post 方式请求页面。大致用法与 get() 一致,但增加一个 data 参数。
|
||||
该方法是用 post 方式请求页面。大致用法与`get()`一致,但增加一个`data`参数。
|
||||
只有 s 模式拥有,调用该方法时,页面对象会自动切换到 s 模式。
|
||||
与 requests 不一样的是,post() 只使用一个 data 参数,而不区分 data 和 json,要传入 json 参数的值也是传入 data。
|
||||
是否须要增加 json 参数有待考察,如有须要请与本库作者联系。
|
||||
与 requests 不一样的是,`post()`只使用一个`data`参数,而不区分`data`和`json`,要传入 json 参数的值也是传入 data。
|
||||
是否须要增加`json`参数有待考察,如有须要请与本库作者联系。
|
||||
|
||||
参数:
|
||||
|
||||
- url:目标 url
|
||||
- data:提交的数据,可以是 dict 或 str 类型
|
||||
- data:提交的数据,可以是`dict`或`str`类型
|
||||
- go_anyway:若目标 url 与当前 url 一致,是否强制跳转
|
||||
- show_errmsg:是否显示和抛出异常,默认不抛出,连接错误会返回 None
|
||||
- retry:重试次数,与页面对象的设置一致,默认 3 次
|
||||
@ -78,7 +78,7 @@ page.post('http://example.com', data=data)
|
||||
|
||||
# 其它请求方式
|
||||
|
||||
本库只针对常用的 get 和 post 方式作了优化,但也可以通过提取页面对象内的 Session 对象以原生 requests 代码方式执行其它请求方式。当然,它们工作在 s 模式。
|
||||
本库只针对常用的 get 和 post 方式作了优化,但也可以通过提取页面对象内的`Session`对象以原生 requests 代码方式执行其它请求方式。当然,它们工作在 s 模式。
|
||||
|
||||
```python
|
||||
from DrissionPage import MixPage
|
||||
|
@ -4,28 +4,28 @@
|
||||
|
||||
## get()
|
||||
|
||||
此方法用于跳转到一个 url,详细用法见“使用方法 -> 访问网页”章节。
|
||||
此方法用于跳转到一个 url,详细用法见“[使用方法 -> 访问网页](访问网页.md)”章节。
|
||||
|
||||
|
||||
|
||||
## ele()、eles()、s_ele()、s_eles()
|
||||
|
||||
这些方法用于在页面中查找元素,详细用法见“使用方法 -> 获取页面元素”章节。
|
||||
这些方法用于在页面中查找元素,详细用法见“[使用方法 -> 查找页面元素](查找页面元素)”章节。
|
||||
|
||||
|
||||
|
||||
## change_mode()
|
||||
|
||||
此方法用于转换 MixPage 模式。
|
||||
此方法用于转换`MixPage`对象的模式。
|
||||
切换后默认在目标模式重新跳转到原模式所在 url。
|
||||
**注意:** s 模式转 d 模式时,若浏览器当前网址域名和 s 模式不一样,必定会跳转。
|
||||
|
||||
参数:
|
||||
|
||||
- mode:目标模式字符串,'s' 或 'd',默认转换到另一种
|
||||
- mode:目标模式字符串,`'s'`或`'d'`,默认转换到另一种
|
||||
- go:转换后是否跳转到原模式所在 url
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
from DrissionPage import MixPage
|
||||
@ -67,15 +67,15 @@ print('登录后title:', page.title)
|
||||
|
||||
## set_cookies()
|
||||
|
||||
此方法用于设置 cookies。
|
||||
可以接收 CookieJar、list、tuple、str、dict 格式的 cookies。
|
||||
此方法用于设置`cookies`。
|
||||
可以接收`CookieJar`、`list`、`tuple`、`str`、`dict`格式的`cookies`。
|
||||
|
||||
参数:
|
||||
|
||||
- cookies:cookies 信息
|
||||
- refresh:设置cookies后是否刷新页面
|
||||
- cookies:`cookies`信息
|
||||
- refresh:设置`cookies`后是否刷新页面
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
cookies = {'name': 'abc'}
|
||||
@ -86,80 +86,80 @@ page.set_cookies(cookies)
|
||||
|
||||
## cookies_to_session()
|
||||
|
||||
此方法用于从 WebDriver 对象复制 cookies 到 Session 对象。
|
||||
此方法用于从`WebDriver`对象复制`cookies`到`Session`对象。
|
||||
|
||||
参数:
|
||||
|
||||
- copy_user_agent:是否同时复制 user agent 信息
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
|
||||
|
||||
## cookies_to_driver()
|
||||
|
||||
此方法用于从 Session 对象复制 cookies 到 WebDriver 对象。
|
||||
此方法用于从`Session`对象复制`cookies`到`WebDriver`对象。
|
||||
|
||||
参数:
|
||||
|
||||
- url:指定 url,默认用当前 url
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
|
||||
|
||||
## download()
|
||||
|
||||
此方法用于下载文件,详细用法见“使用方法 -> 下载文件”章节。
|
||||
此方法用于下载文件,详细用法见“[使用方法 -> 下载文件](下载文件.md)”章节。
|
||||
|
||||
|
||||
|
||||
## close_driver()
|
||||
|
||||
此方法用于关闭 WebDriver 对象和浏览器。
|
||||
此方法用于关闭`WebDriver`对象和浏览器。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## close_session()
|
||||
|
||||
此方法用于关闭 Session 对象。
|
||||
此方法用于关闭`Session`对象。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
# s 模式独有方法
|
||||
|
||||
## post()
|
||||
|
||||
此方法用于以 post 方式访问 url,具体用法见“使用方法 -> 访问网页”章节。
|
||||
此方法用于以 post 方式访问 url,具体用法见“[使用方法 -> 访问网页](访问网页.md)”章节。
|
||||
|
||||
# d 模式独有方法
|
||||
|
||||
## hide_browser()
|
||||
|
||||
此方法用于隐藏浏览器进程窗口,非最小化,任务栏上也可隐藏。
|
||||
但若操作过程中有新增标签页,浏览器会重新出现。 只支持 Windows 系统,且只有设置了 local 或 debugger_address 时生效。
|
||||
但若操作过程中有新增标签页,浏览器会重新出现。 只支持 Windows 系统,且只有设置了`local_port`或`debugger_address`时生效。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## show_browser()
|
||||
|
||||
此方法用于显示被隐藏的浏览器进程。
|
||||
只支持 Windows 系统,且只有设置了 local 或 debugger_address 时生效。
|
||||
只支持 Windows 系统,且只有设置了`local_port`或`debugger_address`时生效。
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## wait_ele()
|
||||
|
||||
此方法用于等待元素到达某种状态。
|
||||
调用此方法返回一个 ElementWaiter 对象,调用该对象方法实现各种方式的等待。
|
||||
调用此方法返回一个`ElementWaiter`对象,调用该对象方法实现各种方式的等待。
|
||||
|
||||
参数:
|
||||
|
||||
@ -225,12 +225,12 @@ page.run_script('alert(arguments[0]+arguments[1])', 'Hello', ' world!')
|
||||
- pageLoad:页面加载超时时间
|
||||
- script:脚本运行超时时间
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## to_frame
|
||||
|
||||
此属性用于将页面焦点移到某个 frame 或 iframe。
|
||||
调用此属性返回一个 ToFrame 对象,调用该对象的方法实现焦点转移。
|
||||
此属性用于将页面焦点移到某个`frame`或`iframe`。
|
||||
调用此属性返回一个`ToFrame`对象,调用该对象的方法实现焦点转移。
|
||||
这些方法返回值为当前页面对象,可实现下一步的链式操作。
|
||||
|
||||
| 方法 | 参数说明 | 功能 |
|
||||
@ -297,7 +297,7 @@ page.to_tab('xxxxxxxxxxxxxxxxxxxx')
|
||||
|
||||
- url:新标签页跳转到的 url
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
page.create_tab('http://www.baidu.com')
|
||||
@ -312,7 +312,7 @@ page.create_tab('http://www.baidu.com')
|
||||
|
||||
- num_or_handles:要保留的标签页序号或 handle,可传入 list 或 tuple,为None时关闭当前页
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
# 关闭当前标签页
|
||||
@ -329,9 +329,9 @@ page.close_tabs((0, 2))
|
||||
|
||||
参数:
|
||||
|
||||
- num_or_handles:要保留的标签页序号或 handle,可传入 list 或 tuple,为None时关闭当前页
|
||||
- num_or_handles:要保留的标签页序号或 handle,可传入`list`或`tuple`,为`None`时关闭当前页
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
# 关闭除当前标签页外的所有标签页
|
||||
@ -345,35 +345,10 @@ reserve_list = ('aaaaa', 'bbbbb')
|
||||
page.close_other_tabs(reserve_list)
|
||||
```
|
||||
|
||||
## ~~scroll_to()~~
|
||||
|
||||
**注意:** 此方法将在下个版本删除,请使用 scroll 属性代替。
|
||||
|
||||
此方法用于按参数指示方式滚动页面。默认状态滚动到底端。
|
||||
|
||||
参数:
|
||||
|
||||
- mode:滚动方向,为字符串,可选范围见下文
|
||||
- pixel:滚动的像素
|
||||
|
||||
返回:None
|
||||
|
||||
mode 参数可在以下选项中选择:
|
||||
|
||||
- 'top':页面顶端,选择它时 pixel 参数无效
|
||||
- 'bottom':页面底端,选择它时 pixel 参数无效
|
||||
- 'half':页面中间位置,选择它时 pixel 参数无效
|
||||
- 'rightmost':页面最右边,垂直方向位置不变,选择它时 pixel 参数无效
|
||||
- 'leftmost':页面最左边,垂直方向位置不变,选择它时 pixel 参数无效
|
||||
- 'up':向上
|
||||
- 'down':向下
|
||||
- 'left':向左
|
||||
- 'right':向右
|
||||
|
||||
## scroll
|
||||
|
||||
此属性用于以某种方式滚动页面。
|
||||
调用此属性返回一个 Scroll 对象,调用该对象方法实现各种方式的滚动。
|
||||
调用此属性返回一个`Scroll`对象,调用该对象方法实现各种方式的滚动。
|
||||
|
||||
| 方法 | 参数说明 | 功能 |
|
||||
| :---------------: | :----------: | :------------------------------: |
|
||||
@ -410,7 +385,7 @@ page.scroll.to_location(100, 300)
|
||||
|
||||
- loc_or_ele:元素的定位信息,可以是元素、定位符
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
```python
|
||||
# 滚动到某个已获取到的元素
|
||||
@ -430,7 +405,7 @@ page.scroll_to_see((By.XPATH, '//div'))
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## back()
|
||||
|
||||
@ -438,7 +413,7 @@ page.scroll_to_see((By.XPATH, '//div'))
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## forward()
|
||||
|
||||
@ -446,7 +421,7 @@ page.scroll_to_see((By.XPATH, '//div'))
|
||||
|
||||
参数:无
|
||||
|
||||
返回:None
|
||||
返回:`None`
|
||||
|
||||
## screenshot()
|
||||
|
||||
@ -468,7 +443,7 @@ page.screenshot(r'D:\img', 'img1')
|
||||
## set_window_size()
|
||||
|
||||
此方法用于设置浏览器窗口大小。
|
||||
默认最大化,任一参数为0最小化。
|
||||
默认最大化,任一参数为 0 最小化。
|
||||
|
||||
参数:
|
||||
|
||||
@ -491,16 +466,16 @@ page.set_window_size(800, 600)
|
||||
## process_alert()
|
||||
|
||||
此方法 用于处理提示框。
|
||||
它能够设置等待时间,等待提示框出现才进行处理,若超时没等到提示框,返回 None。
|
||||
它能够设置等待时间,等待提示框出现才进行处理,若超时没等到提示框,返回`None`。
|
||||
它可只获取提示框文本而不处理提示框。
|
||||
|
||||
参数:
|
||||
|
||||
- mode:'ok' 或 'cancel',若输入其它值,不会按按钮但依然返回文本值
|
||||
- mode:`'ok'`或`'cancel'`,若输入其它值,不会按按钮但依然返回文本值
|
||||
- text:处理 prompt 提示框时可输入文本
|
||||
- timeout:等待提示框出现的超时时间
|
||||
|
||||
返回:提示框内容文本,未等到提示框则返回 None
|
||||
返回:提示框内容文本,未等到提示框则返回`None`
|
||||
|
||||
```python
|
||||
# 确认提示框并获取提示框文本
|
||||
@ -518,5 +493,5 @@ txt = page.process_alert(None)
|
||||
|
||||
## check_page()
|
||||
|
||||
此方法用于检查页面是否符合预期,它默认返回 None,须由子类实现其功能。
|
||||
此方法用于检查页面是否符合预期,它默认返回`None`,须由子类实现其功能。
|
||||
用于 POM 模式时,可派生各种页面子类,从而实现检查页面的功能。
|
||||
|
@ -1,12 +1,12 @@
|
||||
# 安装
|
||||
|
||||
```
|
||||
```shell
|
||||
pip install DrissionPage
|
||||
```
|
||||
|
||||
升级:
|
||||
|
||||
```python
|
||||
```shell
|
||||
pip install DrissionPage --upgrade
|
||||
```
|
||||
|
||||
@ -50,7 +50,7 @@ set_paths(driver_path=r"D:\chrome\chromedriver.exe",
|
||||
|
||||
当出现以下提示,说明设置成功:
|
||||
|
||||
```
|
||||
```shell
|
||||
正在检测可用性...
|
||||
版本匹配,可正常使用。
|
||||
```
|
||||
@ -103,7 +103,7 @@ for row in rows:
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
```shell
|
||||
['总 (205)', '累积确诊', '死亡', '治愈', '现有确诊', '死亡率', '恢复率']
|
||||
['美国', '55252823', '845745', '41467660', '12,939,418', '1.53%', '75.05%']
|
||||
['印度', '34838804', '481080', '34266363', '91,361', '1.38%', '98.36%']
|
||||
|
@ -22,6 +22,6 @@ print('登录后title:', page.title, '\n')
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
```shell
|
||||
登录后title: 个人资料 - 码云 Gitee.com
|
||||
```
|
@ -15,7 +15,7 @@ print(text)
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
```shell
|
||||
Git 命令学习 https://oschina.gitee.io/learn-git-branching/
|
||||
|
||||
Git 命令学习
|
||||
|
182
docs/版本历史.md
182
docs/版本历史.md
@ -1,99 +1,99 @@
|
||||
# v2.4.0
|
||||
|
||||
- wait_ele()、to_frame()、scroll_to()改用类的方式,避免使用字符串方式选择功能
|
||||
- scroll_to()方法改为scroll属性
|
||||
- 滚动页面或元素增加to_location()方式
|
||||
- `wait_ele()`、`to_frame()`、`scroll_to()`改用类的方式,避免使用字符串方式选择功能
|
||||
- `scroll_to()`方法改为`scroll`属性
|
||||
- 滚动页面或元素增加`to_location()`方式
|
||||
|
||||
# v2.3.0
|
||||
|
||||
- DriverPage 添加 forward() 方法
|
||||
- DriverPage 的 close_current_tab() 改为 close_tabs(),可一次过关闭多个标签页
|
||||
- DriverPage 添加 run_async_script()
|
||||
- DriverPage 添加 timeouts 属性
|
||||
- DriverPage 添加 set_timeouts() 方法
|
||||
- DriverElement 添加 scroll_to() 方法,可在元素内滑动滚动条
|
||||
- DriverOptions 添加 set_page_load_strategy() 方法
|
||||
- ini 文件增加 page_load_strategy、set_window_rect、timeouts 三个属性
|
||||
- `DriverPage`添加`forward()`方法
|
||||
- `DriverPage`的`close_current_tab()`改为`close_tabs()`,可一次过关闭多个标签页
|
||||
- `DriverPage`添加`run_async_script()`
|
||||
- `DriverPage`添加`timeouts`属性
|
||||
- `DriverPage`添加`set_timeouts()`方法
|
||||
- `DriverElement`添加`scroll_to()`方法,可在元素内滑动滚动条
|
||||
- `DriverOptions`添加`set_page_load_strategy()`方法
|
||||
- ini 文件增加`page_load_strategy`、`set_window_rect`、`timeouts`三个属性
|
||||
- 其它优化和问题修复
|
||||
|
||||
# v2.2.1
|
||||
|
||||
- 新增基于页面布局的相对定位方法 left(),right(),below(),above(),near(),lefts(),rights(),belows(),aboves(),nears()
|
||||
- 修改基于 DOM 的相对定位方法:删除 parents()方法,parent 属性改为 parent()方法,next 属性 改为 next() 方法,prev 属性改为 prev() 方法,nexts() 和 prevs()
|
||||
- 新增基于页面布局的相对定位方法`left()`,`right()`,`below()`,`above()`,`near()`,`lefts()`,`rights()`,`belows()`,`aboves()`,`nears()`
|
||||
- 修改基于 DOM 的相对定位方法:删除`parents()`方法,`parent`属性改为 `parent()`方法,`next`属性 改为`next()`方法,`prev`属性改为`prev()`方法,`nexts()`和`prevs()`
|
||||
方法改为返回多个对象
|
||||
- 增加 after(),before(),afters(),before() 等基于 DOM 的相对定位方法
|
||||
- 定位语法增加 @@ 和 @@- 语法,用于同时匹配多个条件和排除条件
|
||||
- 改进 ShadowRootElement 功能,现在在 shadow-root 下查找元素可用完全版的定位语法。
|
||||
- DriverElement 的 after 和 before 属性改为 pseudo_after 和 pseudo_before
|
||||
- DriverElement 的 input() 增加 timeout 参数
|
||||
- DriverElement 的 clear() 增加 insure_clear 参数
|
||||
- 优化 DriverElement 的 submit() 方法
|
||||
- DriverPage 增加 active_ele 属性,获取焦点所在元素
|
||||
- DriverPage 的 get_style_property() 改名为 style()
|
||||
- DriverPage 的 hover() 增加偏移量参数
|
||||
- DriverPage 的 current_tab_num 改名为 current_tab_index
|
||||
- DriverPage 的 to_frame() 方法返回页面对象自己,便于链式操作
|
||||
- 增加`after()`,`before()`,`afters()`,`before()`等基于 DOM 的相对定位方法
|
||||
- 定位语法增加`@@`和`@@-`语法,用于同时匹配多个条件和排除条件
|
||||
- 改进`ShadowRootElement`功能,现在在 shadow-root 下查找元素可用完全版的定位语法。
|
||||
- `DriverElement`的`after`和`before`属性改为`pseudo_after`和`pseudo_before`
|
||||
- `DriverElement`的`input()`增加`timeout`参数
|
||||
- `DriverElement`的`clear()`增加`insure_clear`参数
|
||||
- 优化`DriverElement`的`submit()`方法
|
||||
- `DriverPage`增加`active_ele`属性,获取焦点所在元素
|
||||
- `DriverPage`的`get_style_property()`改名为`style()`
|
||||
- `DriverPage`的`hover()`增加偏移量参数
|
||||
- `DriverPage`的`current_tab_num`改名为`current_tab_index`
|
||||
- `DriverPage`的`to_frame()`方法返回页面对象自己,便于链式操作
|
||||
- 优化自动下载 driver 逻辑
|
||||
- set_paths() 增加 local_port 参数
|
||||
- 默认使用 9222 端口启动浏览器
|
||||
- `set_paths()`增加`local_port`参数
|
||||
- 默认使用`9222`端口启动浏览器
|
||||
- 其它优化和问题修复
|
||||
|
||||
# v2.0.0
|
||||
|
||||
- 支持从 DriverElement 或 html 文本生成 SessionElement,可把 d 模式的页面信息爬取速度提高几个数量级(使用新增的 s_ele() 和 s_eles() 方法)
|
||||
- 支持从`DriverElement`或 html 文本生成`SessionElement`,可把 d 模式的页面信息爬取速度提高几个数量级(使用新增的`s_ele()`和`s_eles()`方法)
|
||||
- 支持随时隐藏和显示浏览器进程窗口(只支持 Windows 系统)
|
||||
- s 模式和 d 模式使用相同的提取文本逻辑,d 模式提取文本效率大增
|
||||
- input() 能自动检测以确保输入成功
|
||||
- click() 支持失败后不断重试,可用于确保点击成功及等待页面遮罩层消失
|
||||
- `input()`能自动检测以确保输入成功
|
||||
- `click()`支持失败后不断重试,可用于确保点击成功及等待页面遮罩层消失
|
||||
- 对 linux 和 mac 系统路径问题做了修复
|
||||
- download() 能更准确地获取文件名
|
||||
- `download()`能更准确地获取文件名
|
||||
- 其它稳定性和效率上的优化
|
||||
|
||||
# v1.11.7
|
||||
|
||||
- SessionOptions 增加 set_headers()
|
||||
- 调整 MixPage 初始化参数
|
||||
- click() 增加 timeout 参数,修改逻辑为在超时时间内不断重试点击。可用于监视遮罩层是否消失
|
||||
- 处理 process_alert() 增加 timeout 参数
|
||||
- `SessionOptions`增加`set_headers()`方法
|
||||
- 调整`MixPage`初始化参数
|
||||
- `click()`增加`timeout`参数,修改逻辑为在超时时间内不断重试点击。可用于监视遮罩层是否消失
|
||||
- 处理`process_alert()`增加`timeout`参数
|
||||
- 其他优化和问题修复
|
||||
|
||||
# v1.11.0
|
||||
|
||||
- set_property 属性改名为 set_prop
|
||||
- 增加 prop()
|
||||
- clear() 改用 selenium 原生
|
||||
- 增加 r_click() 和 r_click_at()
|
||||
- input() 返回 None
|
||||
- 增加 input_txt()
|
||||
- `set_property()`方法改名为`set_prop`
|
||||
- 增加`prop()`
|
||||
- `clear()`改用 selenium 原生
|
||||
- 增加`r_click()`和`r_click_at()`
|
||||
- `input()`返回`None`
|
||||
- 增加`input_txt()`
|
||||
|
||||
# v1.10.0
|
||||
|
||||
- 优化启动浏览器的逻辑
|
||||
- 用 debug 模式启动时可读取启动参数
|
||||
- 完善 select 标签处理功能
|
||||
- MixPage 类的 to_iframe() 改名为 to_frame()
|
||||
- MixPage 类的 scroll_to() 增加 'half' 方式,滚动半页
|
||||
- Drission 类增加 kill_browser() 方法
|
||||
- 完善`select`标签处理功能
|
||||
- `MixPage`类的`to_iframe()`改名为`to_frame()`
|
||||
- `MixPage`类的`scroll_to()`增加`'half'`方式,滚动半页
|
||||
- Drission 类增加`kill_browser()`方法
|
||||
|
||||
# v1.9.0
|
||||
|
||||
- 元素增加 click_at() 方法,支持点击偏移量
|
||||
- download() 支持重试
|
||||
- 元素 input() 允许接收组合键,如 ctrl+a
|
||||
- 元素增加`click_at()`方法,支持点击偏移量
|
||||
- `download()`支持重试
|
||||
- 元素`input()`允许接收组合键,如`ctrl+a`
|
||||
- 其它优化
|
||||
|
||||
# v1.8.0
|
||||
|
||||
- 添加 retry_times 和 retry_interval 属性,可统一指定重连次数
|
||||
- 元素对象增加 raw_text 属性
|
||||
- 元素查找字符串支持极简模式,用 x 表示 xpath、c 表示 css、t 表示 tag、tx 表示 text
|
||||
- s 模式元素 text 尽量与 d 模式保持一致
|
||||
- 添加`retry_times`和`retry_interval`属性,可统一指定重连次数
|
||||
- 元素对象增加`raw_text`属性
|
||||
- 元素查找字符串支持极简模式,用`x`表示`xpath`、`c`表示`css`、`t`表示`tag`、`tx`表示`text`
|
||||
- s 模式元素`text`尽量与 d 模式保持一致
|
||||
- 其它完善和问题修复
|
||||
|
||||
# v1.7.7
|
||||
|
||||
- 创建 driver 时可自动下载 chromedriver.exe
|
||||
- 修复获取不到 content-type 时会出现的问题
|
||||
- 创建`WebDriver`时可自动下载 chromedriver.exe
|
||||
- 修复获取不到`content-type`时会出现的问题
|
||||
|
||||
# v1.7.1
|
||||
|
||||
@ -104,18 +104,18 @@
|
||||
|
||||
# v1.7.0
|
||||
|
||||
- 优化 cookies 相关逻辑
|
||||
- MixPage 增加 get_cookies() 和 set_cookies() 方法
|
||||
- 增加 SessionOptions 类
|
||||
- 浏览文件 DriverElement 增加 remove_attr() 方法
|
||||
- 修复 MixPage 初始化时 Session 导入 cookies 时的问题
|
||||
- MixPage 的 close_other_tabs() 方法现在可以接收列表或元组以保留多个 tab
|
||||
- 优化`cookies`相关逻辑
|
||||
- `MixPage`增加`get_cookies()`和`set_cookies()`方法
|
||||
- 增加`SessionOptions`类
|
||||
- 浏览文件`DriverElement`增加`remove_attr()`方法
|
||||
- 修复`MixPage`初始化时`Session`导入`cookies`时的问题
|
||||
- `MixPage`的`close_other_tabs()`方法现在可以接收列表或元组以保留多个 tab
|
||||
- 其它优化
|
||||
|
||||
# v1.6.1
|
||||
|
||||
- 增加 . 和 # 方式用于查找元素,相当于 @Class 和 @id
|
||||
- easy_set 增加识别 chrome 版本并自动下载匹配的 driver 功能
|
||||
- 增加`.`和`#`方式用于查找元素,相当于`@Class`和`@id`
|
||||
- easy_set 增加识别 chrome 版本并自动下载匹配的 chromedriver.exe 功能
|
||||
- 改进配置功能
|
||||
- 修复 shadow-root 方面的问题
|
||||
|
||||
@ -128,7 +128,7 @@
|
||||
|
||||
- 修复获取 html 时会把元素后面的文本节点带上的问题
|
||||
- 修复获取编码可能出现的错误
|
||||
- 优化 download() 和获取编码代码
|
||||
- 优化`download()`和获取编码代码
|
||||
|
||||
# v1.5.1
|
||||
|
||||
@ -137,15 +137,15 @@
|
||||
# v1.5.0
|
||||
|
||||
- s 模式使用 lxml 库代替 requests_html 库
|
||||
- 可直接调用页面对象和元素对象获取下级元素,element('@id=ele_id') 等价于element.ele('@id=ele_id')
|
||||
- nexts()、prevs() 方法可获取文本节点
|
||||
- 可直接调用页面对象和元素对象获取下级元素,`element('@id=ele_id')`等价于`element.ele('@id=ele_id')`
|
||||
- `nexts()`、`prevs()`方法可获取文本节点
|
||||
- 可获取伪元素属性及文本
|
||||
- 元素对象增加 link 和 inner_html 属性
|
||||
- 元素对象增加`link`和`inner_html`属性
|
||||
- 各种优化
|
||||
|
||||
# v1.4.0
|
||||
|
||||
- d 模式使用 js 通过 evaluate 方法处理 xpath,放弃使用 selenium 原生的方法,以支持用 xpath 直接获取文本节点、元素属性
|
||||
- d 模式使用 js 通过`evaluate()`方法处理 xpath,放弃使用 selenium 原生的方法,以支持用 xpath 直接获取文本节点、元素属性
|
||||
- d 模式增加支持用 xpath 获取元素文本、属性
|
||||
- 优化和修复小问题
|
||||
|
||||
@ -153,44 +153,44 @@
|
||||
|
||||
- 可与 selenium 代码无缝对接
|
||||
- 下载功能支持 post 方式
|
||||
- 元素添加 texts 属性,返回元素内每个文本节点内容
|
||||
- 元素添加`texts`属性,返回元素内每个文本节点内容
|
||||
- s 模式增加支持用 xpath 获取元素文本、属性
|
||||
|
||||
# v1.2.1
|
||||
|
||||
- 优化修复网页编码逻辑
|
||||
- download 函数优化获取文件名逻辑
|
||||
- 优化 download() 获取文件大小逻辑
|
||||
- 优化 MixPage 对象关闭 session 逻辑
|
||||
- `download()`函数优化获取文件名逻辑
|
||||
- 优化`download()`获取文件大小逻辑
|
||||
- 优化`MixPage`对象关闭 session 逻辑
|
||||
|
||||
# v1.2.0
|
||||
|
||||
- 增加对 shadow-root 的支持
|
||||
- 增加自动重试连接功能
|
||||
- MixPage 可直接接收配置
|
||||
- `MixPage`可直接接收配置
|
||||
- 修复一些 bug
|
||||
|
||||
# v1.1.3
|
||||
|
||||
- 连接有关函数增加是否抛出异常参数
|
||||
- session 模式判断编码优化
|
||||
- driver 模式 check_page() 优化
|
||||
- 修复 run_script() 遗漏 args 参数的问题
|
||||
- s 模式判断编码优化
|
||||
- d 模式`check_page()`优化
|
||||
- 修复`run_script()`遗漏`args`参数的问题
|
||||
|
||||
# v1.1.1
|
||||
|
||||
- 删除 get_tabs_sum() 和 get_tab_num() 函数,以属性 tabs_count 和 current_tab_num 代替
|
||||
- 增加 current_tab_handle、tab_handles 属性
|
||||
- to_tab() 和 close_other_tabs() 函数可接收 handle 值
|
||||
- create_tab 可接收一个 url 在新标签页打开
|
||||
- 删除`get_tabs_sum()`和`get_tab_num()`函数,以属性`tabs_count`和`current_tab_num`代替
|
||||
- 增加`current_tab_handle`、`tab_handles`属性
|
||||
- `to_tab()`和`close_other_tabs()`函数可接收`handle`值
|
||||
- `create_tab()`可接收一个 url 在新标签页打开
|
||||
- 其它优化和 bug 修复
|
||||
|
||||
# v1.1.0
|
||||
|
||||
- 元素对象增加 xpath 和 css path 路径属性
|
||||
- 修复 driver 模式下元素对象用 css 方式不能获取直接子元素的问题(selenium 的锅)
|
||||
- session 模式下现在能通过 xpath 定位上级元素
|
||||
- 优化 driver 模式兄弟元素、父级元素的获取效率
|
||||
- s 模式下现在能通过 xpath 定位上级元素
|
||||
- 优化 d 模式兄弟元素、父级元素的获取效率
|
||||
- 优化标签页处理功能
|
||||
- 其它小优化和修复
|
||||
|
||||
@ -200,9 +200,9 @@
|
||||
|
||||
# V1.0.3
|
||||
|
||||
- DriverOptions 支持链式操作
|
||||
- download 函数增加参数处理遇到已存在同名文件的情况,可选跳过、覆盖、自动重命名
|
||||
- download 函数重命名调整为只需输入文件名,不带后缀名,输入带后缀名也可自动识别
|
||||
- `DriverOptions`支持链式操作
|
||||
- `download()`函数增加参数处理遇到已存在同名文件的情况,可选跳过、覆盖、自动重命名
|
||||
- `download()`函数重命名调整为只需输入文件名,不带后缀名,输入带后缀名也可自动识别
|
||||
|
||||
# V1.0.1
|
||||
|
||||
@ -210,30 +210,30 @@
|
||||
|
||||
# V0.14.0
|
||||
|
||||
- Drission 类增加代理设置和修改
|
||||
- `Drission`类增加代理设置和修改
|
||||
|
||||
# V0.12.4
|
||||
|
||||
- click() 的 by_js 可接收 False
|
||||
- `click()`的`by_js`可接收`False`
|
||||
- 修复一些 bug
|
||||
|
||||
# V0.12.0
|
||||
|
||||
- 增加 tag:tagName@arg=val 查找元素方式
|
||||
- MixPage 增加简易方式创建对象方式
|
||||
- 增加`tag:tagName@arg=val`查找元素方式
|
||||
- `MixPage`增加简易方式创建对象方式
|
||||
|
||||
# V0.11.0
|
||||
|
||||
- 完善 easy_set 的函数
|
||||
- 完善`easy_set`的函数
|
||||
- 元素增加多级定位函数
|
||||
|
||||
# v0.10.2
|
||||
|
||||
- 完善 attr 及 attrs 功能
|
||||
- 完善`attr`及`attrs`功能
|
||||
|
||||
# v0.10.1
|
||||
|
||||
- 增加 set_headless 以及 to_iframe 兼容全部原生参数
|
||||
- 增加`set_headless()`以及`to_iframe()`兼容全部原生参数
|
||||
|
||||
# v0.9.4
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user