Skip to content

v3.x

v3.x 开始,浏览器和收发数据包部分都使用作者自研内核,摆脱对 WebDriver 的依赖。

v3.2.33

  • 无界面 Linux 自动进入无头模式
  • 添加 MAC 和 Linux 系统默认浏览器路径
  • 修复元素截图时可能出现的问题
  • 修复quit()没有正确等待浏览器进程结束问题
  • 屏蔽 MAC 和 Linux 系统多余的提示
  • 修复set.timeouts()没有正确设置timeout属性的问题
  • 修复关闭 tab 时小几率报错问题
  • 修复某些情况下元素size不准确问题

v3.2.31

  • 页面类增加user_agent属性
  • get_src()方法增加base64_to_bytes参数
  • 重新设计find_tabs()方法
  • 使用新版的DownloadKit,下载增加追加模式
  • new_tab()方法的switch_to属性默认改为False
  • scroll.to_see()方法的center参数默认改为None
  • ChromiumOptions执行set_argument('--headless')时能自动使用正确的写法
  • get()支持 ipv6
  • 元素屏幕坐标会乘以像素比再返回
  • 问题修复
    • 修复wait.data_packets()出现的小概率丢失目标报错
    • 修复当网站 headers 不规范时获取不到编码问题
    • 解决滚动后点击被页面上固定元素遮挡问题
    • 修复某些情况下back()后退不准确的情况
    • 修复'Secure-aa''Host-'开头的 cookie 不能设置的问题
    • 修复WebPageget_cookies()方法不能获取所有域名的问题
    • 修复wait.load_start()不能正确设置超时的问题
    • 修复录屏视频编码一些电脑不支持的问题

v3.2.30

  • 优化抓取数据包逻辑,wait.data_packets()删除targets参数
  • 动作链type()可接收listtuple
  • 浏览器页面对象现在可用 xpath 直接返回文本或注释
  • 恢复对 python 3.6 支持
  • 完全删除之前声明废弃的方法和属性
  • 增加auto_port模式可使用端口范围
  • 修复select.by_index()报错
  • 修复get_session_storage()报错
  • 修复下拉框没有触发onChange问题
  • 修复<iframe>中元素使用s_ele()时出现的问题
  • 微调run_js()逻辑

v3.2.26

  • 新功能
    • 相对定位增加child()children()方法
    • 相对定位增加ele_only参数
    • 页面对象增加get_frames()方法
    • 页面对象增加wait.new_tab()方法
    • 页面对象增加wait.data_packets()方法
    • ChromiumPge增加find_tabs()方法
    • 元素对象增加focus()方法
    • 元素对象增加states.is_checked属性
    • 录屏功能增加非节俭模式和 js 模式
    • 可设置无法点击时抛出异常
    • 元素和动作链增加双击方法
  • api 和特性变更
    • click()删除wait_loading参数
    • click.at()增加count参数
    • drag()drag_to()speed参数改为duration
    • set_headless()方法适配新版浏览器
    • ChromiumPage创建时可只接受端口号
    • new_tab()现在会返回新标签页 id
    • get_frame()方法增加timeout参数,且可接收 id 或 name 为条件
    • ChromiumFramewait属性增加元素特征
    • 录屏功能 api 调整
  • 优化和修复
    • 修复同域ChromiumFrame没有及时关闭连接问题
    • 改进 cookies 处理逻辑
    • 自动用'127.0.0.1'替换'localhost'以提高速度
    • 浏览器路径可接受文件夹路径
    • 提高ChromiumFrame和查找元素稳定性
    • 修复get_local_storage()get_session_storage()获取所有数据时的问题
    • js 返回字典时能正确解析
    • 修复get_src()某情况下timeout失效问题
    • 修复Keys.ENTER没有正确回车问题

v3.2.19

  • 修改click()策略,默认强制模拟点击
  • click()增加timeout参数
  • 页面对象添加重试次数和间隔设置
  • 不使用 ini 文件时也能适配 Chrome 111 版

v3.2.16

  • 适配 Chrome 111 版
  • 修复 cookies 相关问题
  • 修复浏览器页面对象set_headers()方法无效问题
  • 浏览器页面对象get_cookiees()方法增加all_domains参数
  • 优化输入文本前的点击
  • WebPageset_cookies()方法删除两个参数

v3.2.14

  • 查找元素增加^$符号,表示匹配开头和结尾内容
  • 页面对象增加rect.window_state属性
  • 页面对象增加is_alive属性
  • 元素对象等待增加enabled()disabled()disable_or_delete()方法
  • 列表元素增加by_loc()cancel_by_loc()all()方法
  • get_cookies()增加all_info参数
  • Session对象重定向默认为True
  • 去除对 tldextract 库依赖
  • 改善<iframe>等待
  • 提高启动速度
  • 优化元素等待逻辑和下拉菜单逻辑

v3.2.12

  • 支持对异域<iframe>元素内的元素截图
  • 截图增加as_base64参数
  • 页面对象增加滚动行为和等待滚动结束设置
  • 优化连接浏览器和页面滚动逻辑
  • 修复保存图片未正确等待问题
  • 修正元素size属性返回顺序

v3.2.11

  • 增加录屏功能
  • click()删除retrytimeout参数
  • get_src()save()增加timeout参数
  • 增加NoResourceError异常
  • 允许指定使用系统安装的浏览器用户数据文件夹
  • 一些其它优化

v3.2.7

  • ActionChains导入路径改为from DrissionPage.common import ActionChains
  • Keys导入路径改为from DrissionPage.common import Keys
  • 增加By
  • 解决启动浏览器时冲突问题
  • 修复图片保存和ChromiumPage创建时可能遇到的问题

v3.2.5

  • 浏览器元素增加是否被遮盖属性
  • 浏览器元素增加等待被遮盖和等待遮盖取消方法
  • 增加WebPageTab对象,从WebPage生成,可切换模式
  • WebPageget_tab()方法返回WebPageTab对象
  • to_tab()close_tabs()close_other_tabs()方法可接收标签页对象
  • to_front()方法移到set属性,并增加可指定标签页功能
  • 修复用 driver 创建ChromiumPage时初始化不正确的问题

v3.2.3

  • 特性改变

    • WebPage取消自动模式切换
    • 找不到元素时返回NoneElement,还支持抛出异常
    • 下载默认使用浏览器
    • 元素wait_ele()方法取消,改为等待自身状态改变
  • 大量整合同类型的 api

  • 新增功能

    • 拦截上传控件自动填写路径
    • 优先读取项目路径下的 ini 文件
    • 查找元素增加或语法
    • 新增一批异常
    • 新增命令行工具
    • 页面和元素对象新增一批位置属性
    • SessionPage新增一批设置方法
    • 新增几个等待方法
    • 新增get_frame()方法
  • 优化和修复

    • 对程序底层和业务逻辑进行了重新梳理,优化程序逻辑,大幅增强稳定性
    • 新旧版本完全隔离,新版以后开发可放飞自我,无须担心影响以前用MixPage开发的程序
    • 现在会返回开发者能看懂的异常信息
    • 修复页面加载和退出触发弹窗引起的问题
    • 修复<iframe>加载时可能出现的 500 错误
    • 修复异域<iframe>点击问题
    • 没有位置和大小信息的元素在获取这些信息时,现在会抛出异常
    • 修复内存没有正确释放的问题
    • 修复点击被固定栏遮挡问题
    • 接管新出现的<iframe>会自动等待内容加载
    • 修复<iframe>在同域和异域间互相跳转时会卡住的问题
    • 修复<iframe>内元素截图出现偏移问题

v3.1.6

  • ChromiumPage添加latest_tab属性

  • WebPage初始化删除tab_id参数

  • 修复页面未加载完可能获取到空元素的问题

  • 修复新标签页重定向时获取文档不正确问题

  • 修复使用多标签页或 iframe 时内存未释放问题

  • 增强稳定性

v3.1.1

  • 增强下载功能

    • ChromiumPage也可以使用内置下载器下载文件
    • 可拦截并接管浏览器下载任务
    • 新增download_set属性对下载参数进行设置
    • 增加wait_download_begin()方法
  • 改进浏览器启动设置

    • 优化 ini 文件结构
    • 新增ChromiumOptions取代DriverOptions,完全摆脱对 selenium 的依赖
    • 新增自动分配端口功能
    • 优化SessionOptions设计,增加一系列设置参数的方法
    • 改进对用户配置文件的设置
  • 对部分代码进行重构

    • 优化页面对象启动逻辑
    • 优化配置类逻辑
    • 优化项目结构
  • 细节

    • 上传文件时支持传入相对路径
  • bug 修复

    • 修复get_tab()出错问题
    • 修复新浏览器第一次新建标签页时不正确切换的问题
    • 修复关闭当前标签页出错问题
    • 修复改变浏览器窗口大小出错问题

v3.0.34

  • WebPage删除check_page()方法
  • DriverOptionseasy_setset_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_jsrun_async_js()
  • 返回的坐标数据全部转为int类型组成的tuple
  • 修改注释

v3.0.30

  • 元素增加m_click()方法
  • 动作链增加type()m_click()r_hold()r_release()m_hold()m_release()方法
  • 动作链的on_ele参数可接收文本定位符
  • WebPageSessionPageChromiumPage增加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以上版本浏览器支持)

其它更新:

  • 增加ChromiumTabChromiumFrame类用于处理 tab 和 frame 元素
  • 新增与WebPage配合的动作链接ActionChains
  • ini 文件和DriverOption删除set_window_rect属性
  • 浏览器启动配置实现对插件的支持
  • 浏览器启动配置实现对experimental_optionsprefs属性支持