📒 v4.0
v4.0.5.6
- 优化
auto_port()逻辑 set.cookies()忽略过期的 cookie- 修复下载文件可能出现无写入权限报错
- 修复
SessionPage的 headers 设置问题 - 修复链接以
'./'开头时ele.link获取不准确的问题 - 修复异域
<iframe>跳转到同域时的问题
v4.0.5.2
- 增加视觉相对定位语法
- 改进元素结果列表筛选功能
wait.has_rect()和wait.covered()返回具体信息- 删除元素获取任意属性语法
- 删除之前声明废弃的参数、方法和属性
- 修复
states.is_alive()和wait.deleted()问题
v4.0.4.25
- 支持对
eles()返回的列表进行筛选 DrissionPage.common新增get_eles()方法,可接收多个定位符获取多个元素input()输入前会自动等待元素可点击set.cookies()接收str形式 cookies 时,只支持用';'做分隔符- 修复监听一个报错
v4.0.4.23
- 元素增加
states.is_clickable属性和wait.clickable()、set.style()方法 tree()增加text、show_js、show_css参数wait.stop_moving()参数顺序改变tab_ids属性不再屏蔽插件标签页- 修复
SessionPage的get()方法访问本地中文路径问题 - 等待元素时可抛出页面断开异常
v4.0.4.22
- 动作链
scroll()方法参数位置变化 - 页面对象的
save()方法可根据后缀自动判断类型 - 中键单击返回 Tab 对象
tab_ids属性忽略插件 tab- 优化 cookies 设置逻辑
- Frame 对象初始化时不再等待 url 变化
- 修复全局代理时无法连接浏览器的问题
- 修复截图文件名过长时的问题
- 修复带 html 节点的 shadow root 获取不到子元素问题
- 降低失去元素报错可能性
v4.0.4.21
add_ele()的outerHTML参数改为html_or_info,可新增不插入到 DOM 的元素wait.ele_loaded()改成wait.eles_loaded(),可等待多个元素全部或任一个加载- 取消无界面 Linux 自动无头功能
- 调整
quit()逻辑 - 修复 prompt 无法输入的问题
- 修复
WebPageTab的close()报错问题 - 修复下拉列表已选中元素再点击会取消的问题
- 修复
run_js()无法添加dict参数问题 - 修复
set.cookies()的一个问题
v4.0.4.17
- Page 对象的
set.auto_handle_alert()增加all_tabs参数 - 修复
ele.text速度慢的问题 - 修复在未访问网页时设置
'__Host-'开头的 cookie 时出现的问题
v4.0.4.16
ChromiumPage增加browser_version属性DataPacket.request增加cookies属性wait_slient()方法增加limit参数Keys增加CTRL_A等 6 个组合键- 元素的
save()方法增加rename参数 - 元素的
input()方法的clear参数默认值改为False - 动作链
type()可接收键盘以外的字符 get_tab()和get_tabs()默认获取普通 tab- 修复动作链
wait()问题
v4.0.4.13
- 动作链
wait()增加随机功能 - 当 tab 设置不为单例时,
latest_tab返回 tab id - 修复新标签页重复创建连接问题
- 修复等待新 tab 不正确问题
v4.0.4.12
- 元素增加获取任意属性方式
- 调整
quit()逻辑 - 优化
set.cookies()逻辑 - 修复
get_tab()问题 - 修复
set_flags()特定情况下出现的问题 - 修复某
WebPage在些情况下get_tab()时出现的问题
v4.0.4.9
get_tab()方法增加几个参数find_tabs()方法改为get_tabs(),且改为默认返回标签页对象- 设置
headers时可接收从浏览器复制的文本格式 common路径增加from_selenium()和from_playwright()方法latest_tab改为返回标签页对象tabs属性改为tab_ids- 修复从文本生成的静态元素
link属性报错问题 - 修复保存的 mhtml 文件无法被浏览器解析问题
v4.0.4.8
- 增加
click.for_new_tab()方法 wait()方法增加scope参数,可等待指定随机时间set.upload_files()和click.to_upload()方法支持接收Path类型click.to_download()增加timeout参数- 元素对象
page属性改为指向总体的 Page对象,增加owner属性 - 完善找 chrome 路径逻辑
- 调整
quit()逻辑 - 修复处理有些下拉列表时报错问题
- 修复页面用 css 查找元素时会找到文本的问题
- 修复用 css 在元素下获取多个子元素时数量不正确问题
- 修复在 ini 文件设置下载路径时报错问题
- 修复
run_async_js()报错问题 - 修复
reconnect()报错问题
v4.0.4.5
- 截图左上和右下参数可只接收其中一个
- 配置对象
save()可生成不存在的路径 - 增加
click.to_upload()和click.to_download()方法 DrissionPage.common增加tree()方法- 去除
upload()方法 - 修复
handle_alert() - 修复一个 js 结果解析问题
- 修复命令行问题
v4.0.4.3
ChromiumOptions增加clear_arguments()、clear_prefs()和clear_flags()方法- 浏览器页面对象增加
upload()方法 - 浏览器页面对象增加
add_ele()方法 run_js()方法可读取文件click.multiple()改为click.multi()- 修复旧版 python 中
get()报错问题
v4.0.4.1
- 打包程序即使不带上 ini 文件也不会报错
SessionOptions增加clear_headers()方法Settings增加cdp_timeout属性prop()改成property(),参数改为nameget_cookies()改为cookies()get_src()改为src()- 删除
cookies属性 get_session_storage()、get_local_storage()改为session_storage()、local_storage()pageLoad改成page_loadset_a_header()、remove_a_header()、set.header()、set.attr()的参数改为name- 元素增加
value属性和set.value()方法 loc_or_ele、loc_or_str等参数改为locator- 提高截图 jpg 格式画质
- 修复 s 模式
timeout参数失效问题 - 修复
wait.has_rect()等出现的问题 - 修复找不到浏览器路径时报 ini 错误问题
- 增加一些提示
v4.0.3.4
此版本对项目进行了大量重构,新增了不少功能,改善了运行逻辑,优化了项目结构,解决了很多以前积累的问题。对比旧版本有质的提高。
但同时很多 api 产生了变化,不能完全兼容旧版本。
- 改进抓包功能
- 页面对象新增
listen属性,弃用FlowViewer - 删除
wait.set_targets()删除 - 删除
wait.stop_listening()方法 - 删除
wait.data_packets()方法 DrissionPage.common路径删除FlowViewer- 用
listen.set_start()和listen.stop()启动和停止监听 - 用
listen.wait()阻塞等待数据包 - 用
listen.steps()同步获取监听结果 - 增加
listen.wait_silent()等待所有请求完成(包含 targets 以外的) - 监听结果结构优化,request 和 response 数据分开存放
- 页面对象新增
- 重构连接逻辑
- 页面对象
page_load_strategy属性改名为load_mode set.load_strategy改为set.load_modeget()方法的timeout参数现在可覆盖整个过程timeout参数对非get()方法触发的加载(如点击链接)也能生效SessionPage和WebPage的 s 模式,如收到空数据,也会重试SessionPage的get()方法可以指向本地文件- 新的
none加载模式
- 页面对象
- 改进下载管理功能
- 页面对象删除
download_set属性 - 增加
set.download_path()方法 - 增加
set.download_file_name()方法 - Tab 对象和 Frame 对象也支持
download()方法 - 每个 Tab 对象可单独设置下载路径和重命名文件名
- 可拦截浏览器下载任务并获取其信息
- 可取消浏览器下载任务、获取下载进度、等待任务完成
- 可设置遇到文件夹已存在时的处理方式
- 默认不启用浏览器下载任务管理
- 页面对象删除
- 页面对象改进
ChromiumPage和WebPage改为固定单例get_tab()获取的 Tab 对象默认单例,可用Settings设置允许多例- 浏览器页面对象启动时不再接收
ChromiumDriver对象 WebPage对象的driver_or_options参数改名为chromium_optionsChromiumPage对象的addr_driver_opts参数改名为addr_or_opts- 页面对象内置动作链
ready_state、is_loading、is_alive属性合并到states属性中- 页面对象增加
raw_data参数,s 模式下返回原始数据 - 所有页面对象增加
close()方法,SessionPage用于关闭连接,浏览器页面对象用于关闭标签页 - 浏览器页面对象增加
wait()方法,用于等待若干秒 - 浏览器页面对象增加
wait.ele_loaded()方法,等待元素加载到DOM - 浏览器页面对象增加
wait.title_change()和wait.url_change()方法,用于等待 title 和 url 变化 - 浏览器页面对象增加
wait.alert_closed()方法,用于等待弹窗被手动关闭 - 浏览器页面对象增加
set.blocked_urls()方法,可设置忽略的连接 - Tab 和 Page 对象增加
disconnect()、reconnect()和save()方法 - Tab 和 Page 对象增加
add_init_js()和remove_init_js()方法 wait.ele_delete()方法改为wait.ele_deleted()wait.ele_display()方法改为wait.ele_displayed()wait.load_complete()方法改为wait.doc_loaded()quit()方法增加force参数,可强制关闭浏览器进程ChromiumFrame增加ract属性ChromiumFrame的frame_size属性改为rect.size- 优化
SessionPage和WebPages 模式访问速度 WebPage在 d 模式时,post()返回Response对象
- 标签页管理改进
- 删除
to_tab()方法 - 删除
to_main_tab()、set.main_tab()方法 - 删除
main_tab属性 new_tab()方法删除switch_to参数new_tab()方法增加new_window、background、new_context参数rect.borwser_size改为rect.window_sizerect.borwser_location改为rect.window_locationset.window.maximized()改为set.window.max()set.window.minimized()改为set.window.mini()set.window.fullscreen()改为set.window.full()- Tab 对象增加
set.activate()、close()、handle_alert()、states.has_alert get_tab()的tab_id参数改为id_or_num,可接收序号
- 删除
- cookies 设置改进
set.cookies()可接收单个 cookie- 增加
set.cookies.clear()方法用于清除 cookies - 增加
set.cookies.remove()方法用于删除一个 cookie 项
- 元素相关改进
- 查找元素增加
@!语法 - 删除
@@-和@|-语法 ele()和s_ele()增加index参数,可指定获取第几个- 相对定位第一个参数支持接收序号
- 位置和大小
- 删除
size、location、locations属性,新增rect属性 - 旧版中
loactions.****的属性改为rect.**** - 大小和位置信息,从
int类型改为float类型 - 增加
states.has_rect属性,返回元素是否拥有大小和位置 - 增加
states.is_whole_in_viewport属性,返回元素是否整个都在视口内
- 删除
- 点击改进
click()增加wait_stop参数,默认等待元素运动停止再点击click()默认等待元素运动停止再执行点击click.twice()改为click.multiple()
- 查找元素失败显示细节
- 可设置查找失败元素返回默认值
- 增加
wait.stop_moving()方法,可等待移动结束 - 增加
wait()方法,等待若干秒 - 增加
check()方法,可选中或取消选中元素 - 滚动添加
to_center()方式,可滚动到视口中央 - 增加
select.by_option()和select.cancel_by_option()方法,可选取列表项元素 - 增加
states.has_rect属性 - 添加
states.is_whole_in_viewport属性,判断是否整个都在视口中 - 元素被覆盖时,
states.is_covered属性返回覆盖元素的 id input()方法增加by_js参数save()的rename参数改为nameget_src()支持 blob 类型css_path获取的路径更精确- 相对定位的
timeout参数默认改为None wait.delete()方法改为wait.deleted()wait.disabled_or_delete()方法改为wait.disabled_or_deleted()wait.display()方法改为wait.displayed()- 可用
==比较两个元素 - 查找元素速度提高
- 查找元素增加
- 启动配置改进
- 删除 easy_set 方法
- 启动或接管浏览器时,可自动关闭弹出的隐私声明
- 在无界面系统启动浏览器时,自动使用无头,可用
set_headless(False)禁用 - 当
set_headless(False)但接管了无头浏览器,将关闭并启动新的有头浏览器 auto_port()方法支持多线程- ini 文件
chrome_options类改为chromium_optionsbinary_location项改为browser_pathpage_load_strategy项改为load_modedebugger_address项改为addressarguments项删除'--remote-allow-origins=*'参数arguments项增加'--no-default-browser-check'、'--disable-suggestions-ui'、'--disable-popup-blocking'、'--hide-crash-restore-bubble'、'--disable-features=PrivacySandboxSettings4'参数paths类增加tmp_paht项- 删除
experimental_options项 chrome_options类增加prefs、flags、existing_only项- 增加
others类,包含retry_times和retry_interval项
ChromiumOptions- 增加
set_flag()和clear_flags_in_file(),用于设置实验项 - 增加
existing_only()方法和is_existing_only属性,可指定只接管浏览器而不自动启动新的 - 增加
ignore_certificate_errors()方法,可忽略证书报错 - 增加
retry_times、retry_interval属性和set_retry()方法,可设置重试参数 - 增加
incognito()方法,可设置无痕模式 - 增加
set_tmp_path()方法 - 增加
tmp_path和is_auto_port属性 auto_port()增加tmp_path参数set_paths()方法拆 分成set_browser_path()、set_local_port()、set_address()、set_download_path()、set_user_data_path()、set_cache_path()方法set_page_load_strategy()改成set_load_mode()set_headless()改成headless()set_no_imgs()改成no_imgs()set_no_js()改成no_js()set_mute()改成mute()debugger_address改成address
- 增加
SessionOptionsSessionOptions的set_paths()方法改为set_download_path()- 增加
retry_times、retry_interval属性和set_retry()方法,可设置重试参数
- 其它
- 删除 2.x 代码
handle_alert()方法增加next_one参数,可处理下一个出现的弹窗- 浏览器页面对象增加
set.auto_handle_alert()方法,可设置自动处理弹窗 SessionPage增加set.encoding()方法和encoding属性<option>元素可以接受点击,操作更符合直觉run_js()、run_js_loaded()、run_async_js()方法增加timeout参数run_async_js()删除timeout参数timeouts的implicit改成baseActionChains改成Actions- 动作链的移动方法增加
duration参数 - 动作链增加
input()方法 - 动作链
key_down()和key_up()方法可接收按键名称文本 - 动作链
type()方法text参数改为keys get_screenshot()方法增加name属性,可指定文件名- 元素的
get_screenshot()方法增加scroll_to_center参数,截图前先滚动到页面正中 wait.new_tab()方法成功时返回新标签页 idtabs不包含 F12 的窗口DrissionPage.common路径增加wait_until()方法,支持自定义组合等待条件DrissionPage.common路径增加get_blob()方法- 异常变化
CallMethodError改为CDPErrorElementLossError改为ElementLostErrorContextLossError改为ContextLostErrorTabClosedError改为PageDisconnectedError- 增加
WaitTimeoutError - 增加
GetDocumentError - 增加
WrongURLError - 增加
StorageError - 增加
CookieFormatError - 增加
TargetNotFoundError
- Settings 变化
- 增加
singleton_tab_obj,设置 Tab 对象是否允许多例 raise_ele_not_found改为raise_when_ele_not_foundraise_click_failed改为raise_when_click_failed
- 增加
- 优化
- MAC 和 Linux 系统添加默认浏览器路径
- 全面重构对象启动和运行逻辑,大幅提高稳定性
- 接管或启动浏览器不再要求
--remote-allow-orignins参数 - 所有涉及循环的代码都加上超时设施,杜绝卡死
- 对
ChromiumFrame进行完全重构,提高稳定性 - 调整项目结构
- 问题修复
- 修复网络连接极不稳定时获取文档失败问题
- 修复相对定位
timeout失效问题 - 修复 shadow root 内定位元素可能偏差问题
- 修复异域
ChromiumFrame内部元素无法获取屏幕坐标的问题 - 修复相对路径插件加载失败的问题
- 所有循环增加超时设置,避免出现卡死
- 修复元素截图时窗口外部分空白问题
- 修复 Tab 没有继承 Page 下载路径的问题
- 修复
<iframe>内元素获取 href 属性错误问题 - 修复 cookie 设置 expires 时的问题