mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
435 lines
13 KiB
Markdown
435 lines
13 KiB
Markdown
# v3.1.3
|
||
|
||
- `ChromiumPage`添加`latest_tab`属性
|
||
|
||
- `WebPage`初始化删除`tab_id`参数
|
||
|
||
- 修复页面未加载完可能获取到空元素的问题
|
||
|
||
- 修复新标签页重定向时获取文档不正确问题
|
||
|
||
- 增强稳定性
|
||
|
||
# v3.1.1
|
||
|
||
- 增强下载功能
|
||
|
||
- `ChromiumPage`也可以使用内置下载器下载文件
|
||
|
||
- 可拦截并接管浏览器下载任务
|
||
|
||
- 新增`download_set`属性对下载参数进行设置
|
||
|
||
- 增加`wait_download_begin()`方法
|
||
|
||
- 改进浏览器启动设置
|
||
|
||
- 优化 ini 文件结构
|
||
|
||
- 新增`ChromiumOptions`取代`DriverOptions`,完全摆脱对 selenium 的依赖
|
||
|
||
- 新增自动分配端口功能
|
||
|
||
- 优化`SessionOptions`设计,增加一系列设置参数的方法
|
||
|
||
- 改进对用户配置文件的设置
|
||
|
||
- 对部分代码进行重构
|
||
|
||
- 优化页面对象启动逻辑
|
||
|
||
- 优化配置类逻辑
|
||
|
||
- 优化项目结构
|
||
|
||
- 细节
|
||
|
||
- 上传文件时支持传入相对路径
|
||
|
||
- bug 修复
|
||
|
||
- 修复`get_tab()`出错问题
|
||
|
||
- 修复新浏览器第一次新建标签页时不正确切换的问题
|
||
|
||
- 修复关闭当前标签页出错问题
|
||
|
||
- 修复改变浏览器窗口大小出错问题
|
||
|
||
# v3.0.34
|
||
|
||
- `WebPage`删除`check_page()`方法
|
||
|
||
- `DriverOptions`和`easy_set`的`set_paths()`增加`browser_path`参数
|
||
|
||
- `DriverOptions`增加`browser_path`属性
|
||
|
||
- `ChromiumFrame`现在支持页面滚动
|
||
|
||
- 改进滚动到元素功能
|
||
|
||
- 修改`SessionElement`相对定位参数顺序
|
||
|
||
- `SessionPage`也可以从 ini 文件读取 timeout 设置
|
||
|
||
- ini 文件中`session_options`增加`timeout`项
|
||
|
||
- `SessionOptions`增加`timeout`属性、`set_timeout()`方法
|
||
|
||
- 优化和修复一些问题
|
||
|
||
# v3.0.31
|
||
|
||
- `run_script()`、`run_async_script()`更名为`run_js`和`run_async_js()`
|
||
- 返回的坐标数据全部转为`int`类型组成的`tuple`
|
||
- 修改注释
|
||
|
||
# v3.0.30
|
||
|
||
- 元素增加`m_click()`方法
|
||
- 动作链增加`type()`、`m_click()`、`r_hold()`、`r_release()`、`m_hold()`、`m_release()`方法
|
||
- 动作链的`on_ele`参数可接收文本定位符
|
||
- `WebPage`、`SessionPage`、`ChromiumPage`增加`set_headers()`方法
|
||
|
||
# v3.0.28
|
||
|
||
- 各种大小、位置信息从`dict`改为用`tuple`返回
|
||
- 改进`ChromiumFrame`
|
||
- 修复小窗时定位不准问题,修复 iframe 内元素无法获取 s_ele() 问题
|
||
- 增加`wait_loading`方法和参数
|
||
- 其它优化和问题修复
|
||
|
||
# v3.0.22
|
||
|
||
- `change_mode()`增加`copy_cookies`参数
|
||
- 调整`WebPage`生成的元素对象的`prev()`、`next()`、`before()`、`after()`参数顺序
|
||
- 修复读取页面时小概率失效问题
|
||
- 用存根文件取代类型注解
|
||
|
||
# v3.0.20
|
||
|
||
重大更新。推出`WebPage`,重新开发底层逻辑,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。支持 chromium 内核的浏览器(如 chrome 和 edge)。比`MixPage`有以下优点:
|
||
|
||
- 无 webdriver 特征,不会被网站识别
|
||
- 无需为不同版本的浏览器下载不同的驱动
|
||
- 运行速度更快
|
||
- 可以跨 iframe 查找元素,无需切入切出
|
||
- 把 iframe 看作普通元素,获取后可直接在其中查找元素,逻辑更清晰
|
||
- 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态
|
||
- 可以直接读取浏览器缓存来保持图片,无需用 GUI 点击保存
|
||
- 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)
|
||
|
||
其它更新:
|
||
|
||
- 增加`ChromiumTab`和`ChromiumFrame`类用于处理 tab 和 frame 元素
|
||
- 新增与`WebPage`配合的动作链接`ActionChains`
|
||
- ini 文件和`DriverOption`删除`set_window_rect`属性
|
||
- 浏览器启动配置实现对插件的支持
|
||
- 浏览器启动配置实现对`experimental_options`的`prefs`属性支持
|
||
|
||
# v2.7.3
|
||
|
||
- 页面对象和元素对象的`screenshot_as_bytes()`方法合并到`screenshot()`
|
||
- `input()`方法接收非文本参数时自动转成文本输入
|
||
|
||
# v2.7.2
|
||
|
||
- d 模式页面和元素对象增加`screenshot_as_bytes()`方法
|
||
|
||
# v2.7.1
|
||
|
||
- DriverPage
|
||
- 增加`get_session_storage()`、`get_local_storage()`、`set_session_storage()`、`set_local_storage()`、`clean_cache()`方法
|
||
- `run_cdp()`的`cmd_args`参数改为`**cmd_args`
|
||
- 关闭 driver 时会主动关闭 chromedriver.exe 的进程
|
||
- 优化关闭浏览器进程逻辑
|
||
|
||
# v2.6.2
|
||
|
||
- d 模式增加`stop_loading()`方法
|
||
- 优化完善监听器功能
|
||
|
||
# v2.6.0
|
||
|
||
- 新增`Listener`类
|
||
- 可监听浏览器数据包
|
||
- 可异步监听
|
||
- 可实现每监听到若干数据包执行操作
|
||
- 放弃对selenium4.1以下的支持
|
||
- 解决使用新版浏览器时出现的一些问题
|
||
|
||
# v2.5.9
|
||
|
||
- 优化 s 模式创建连接的逻辑
|
||
|
||
# v2.5.7
|
||
|
||
- 列表元素`select()`、`deselect()`等方法添加`timeout`参数,可等待列表元素加载
|
||
- 优化了对消息提示框的处理
|
||
- `drag()`和`drag_to()`不再检测是否拖拽成功,改成返回`None`
|
||
- `DriverOptions`对象从父类继承的方法也支持链式操作
|
||
- 其它优化和问题修复
|
||
|
||
# v2.5.5
|
||
|
||
- `DriverPage`添加`run_cdp()`方法
|
||
- `get()`和`post()`方法删除`go_anyway`参数
|
||
- 连接重试默认不打印提示
|
||
|
||
# v2.5.0
|
||
|
||
- 用 DownloadKit 库替代原来的`download()`方法,支持多线程并发
|
||
- `DriverPage`增加`set_ua_to_tab()`方法
|
||
- 删除`scroll_to()`方法
|
||
- 其它优化和问题修复
|
||
|
||
# v2.4.3
|
||
|
||
- `wait_ele()`、`to_frame()`、`scroll_to()`改用类的方式,避免使用字符串方式选择功能
|
||
- `scroll_to()`方法改为`scroll`属性
|
||
- 滚动页面或元素增加`to_location()`方式
|
||
- 优化`Select`类用法
|
||
|
||
# v2.3.3
|
||
|
||
- `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()`
|
||
方法改为返回多个对象
|
||
- 增加`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`端口启动浏览器
|
||
- 其它优化和问题修复
|
||
|
||
# v2.0.0
|
||
|
||
- 支持从`DriverElement`或 html 文本生成`SessionElement`,可把 d 模式的页面信息爬取速度提高几个数量级(使用新增的`s_ele()`和`s_eles()`方法)
|
||
- 支持随时隐藏和显示浏览器进程窗口(只支持 Windows 系统)
|
||
- s 模式和 d 模式使用相同的提取文本逻辑,d 模式提取文本效率大增
|
||
- `input()`能自动检测以确保输入成功
|
||
- `click()`支持失败后不断重试,可用于确保点击成功及等待页面遮罩层消失
|
||
- 对 linux 和 mac 系统路径问题做了修复
|
||
- `download()`能更准确地获取文件名
|
||
- 其它稳定性和效率上的优化
|
||
|
||
# v1.11.7
|
||
|
||
- `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()`
|
||
|
||
# v1.10.0
|
||
|
||
- 优化启动浏览器的逻辑
|
||
- 用 debug 模式启动时可读取启动参数
|
||
- 完善`select`标签处理功能
|
||
- `MixPage`类的`to_iframe()`改名为`to_frame()`
|
||
- `MixPage`类的`scroll_to()`增加`'half'`方式,滚动半页
|
||
- Drission 类增加`kill_browser()`方法
|
||
|
||
# v1.9.0
|
||
|
||
- 元素增加`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 模式保持一致
|
||
- 其它完善和问题修复
|
||
|
||
# v1.7.7
|
||
|
||
- 创建`WebDriver`时可自动下载 chromedriver.exe
|
||
- 修复获取不到`content-type`时会出现的问题
|
||
|
||
# v1.7.1
|
||
|
||
- d 模式如指定了调试端口,可自动启动浏览器进程并接入
|
||
- 去除对 cssselect 库依赖
|
||
- 提高查找元素效率
|
||
- 调整获取元素 xpath 和 css_path 逻辑
|
||
|
||
# v1.7.0
|
||
|
||
- 优化`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 版本并自动下载匹配的 chromedriver.exe 功能
|
||
- 改进配置功能
|
||
- 修复 shadow-root 方面的问题
|
||
|
||
# v1.5.4
|
||
|
||
- 优化获取编码的逻辑
|
||
- 修复下载不能显示进度的问题
|
||
|
||
# v1.5.2
|
||
|
||
- 修复获取 html 时会把元素后面的文本节点带上的问题
|
||
- 修复获取编码可能出现的错误
|
||
- 优化`download()`和获取编码代码
|
||
|
||
# v1.5.1
|
||
|
||
- 修复获取编码可能出现的 bug
|
||
|
||
# v1.5.0
|
||
|
||
- s 模式使用 lxml 库代替 requests_html 库
|
||
- 可直接调用页面对象和元素对象获取下级元素,`element('@id=ele_id')`等价于`element.ele('@id=ele_id')`
|
||
- `nexts()`、`prevs()`方法可获取文本节点
|
||
- 可获取伪元素属性及文本
|
||
- 元素对象增加`link`和`inner_html`属性
|
||
- 各种优化
|
||
|
||
# v1.4.0
|
||
|
||
- d 模式使用 js 通过`evaluate()`方法处理 xpath,放弃使用 selenium 原生的方法,以支持用 xpath 直接获取文本节点、元素属性
|
||
- d 模式增加支持用 xpath 获取元素文本、属性
|
||
- 优化和修复小问题
|
||
|
||
# v1.3.0
|
||
|
||
- 可与 selenium 代码无缝对接
|
||
- 下载功能支持 post 方式
|
||
- 元素添加`texts`属性,返回元素内每个文本节点内容
|
||
- s 模式增加支持用 xpath 获取元素文本、属性
|
||
|
||
# v1.2.1
|
||
|
||
- 优化修复网页编码逻辑
|
||
- `download()`函数优化获取文件名逻辑
|
||
- 优化`download()`获取文件大小逻辑
|
||
- 优化`MixPage`对象关闭 session 逻辑
|
||
|
||
# v1.2.0
|
||
|
||
- 增加对 shadow-root 的支持
|
||
- 增加自动重试连接功能
|
||
- `MixPage`可直接接收配置
|
||
- 修复一些 bug
|
||
|
||
# v1.1.3
|
||
|
||
- 连接有关函数增加是否抛出异常参数
|
||
- 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 在新标签页打开
|
||
- 其它优化和 bug 修复
|
||
|
||
# v1.1.0
|
||
|
||
- 元素对象增加 xpath 和 css path 路径属性
|
||
- 修复 driver 模式下元素对象用 css 方式不能获取直接子元素的问题(selenium 的锅)
|
||
- s 模式下现在能通过 xpath 定位上级元素
|
||
- 优化 d 模式兄弟元素、父级元素的获取效率
|
||
- 优化标签页处理功能
|
||
- 其它小优化和修复
|
||
|
||
# V1.0.5
|
||
|
||
- 修复切换模式时 url 出错的 bug
|
||
|
||
# V1.0.3
|
||
|
||
- `DriverOptions`支持链式操作
|
||
- `download()`函数增加参数处理遇到已存在同名文件的情况,可选跳过、覆盖、自动重命名
|
||
- `download()`函数重命名调整为只需输入文件名,不带后缀名,输入带后缀名也可自动识别
|
||
|
||
# V1.0.1
|
||
|
||
- 增强拖拽功能和 chrome 设置功能
|
||
|
||
# V0.14.0
|
||
|
||
- `Drission`类增加代理设置和修改
|
||
|
||
# V0.12.4
|
||
|
||
- `click()`的`by_js`可接收`False`
|
||
- 修复一些 bug
|
||
|
||
# V0.12.0
|
||
|
||
- 增加`tag:tagName@arg=val`查找元素方式
|
||
- `MixPage`增加简易方式创建对象方式
|
||
|
||
# V0.11.0
|
||
|
||
- 完善`easy_set`的函数
|
||
- 元素增加多级定位函数
|
||
|
||
# v0.10.2
|
||
|
||
- 完善`attr`及`attrs`功能
|
||
|
||
# v0.10.1
|
||
|
||
- 增加`set_headless()`以及`to_iframe()`兼容全部原生参数
|
||
|
||
# v0.9.4
|
||
|
||
- 修复 bug
|
||
|
||
# v0.9.0
|
||
|
||
- 增加了元素拖拽和处理提示框功能
|
||
|
||
# v0.8.4
|
||
|
||
- 基本完成
|