跳到主要内容

📒 v4.x


v4.1.0.5

  • 引入Chromium对象用于代表浏览器
  • WebPageTab改名为MixTab
  • SessionPageChromiumPageWebPage初始化时删除timeout提示,以后会废弃
  • activate_tab()取代set.tab_to_front()
  • Frame 对象增加set.property()set.style()link
  • 元素对象增加get_frame()方法
  • 所有对象增加find()方法,用于同时匹配多个定位符
  • quit()增加del_data参数
  • Tab 对象的close()方法增加others参数
  • cookies()删除as_dict参数,增加as_dict()as_jsonas_str()方法
  • 浏览器页面和元素对象的s_ele()s_eles()方法增加tiemout参数
  • 浏览器页面和元素对象增加rect.scroll_position属性
  • 动作链删除db_click(),各点击方法增加times参数
  • wait.new_tab()增加curr_tab参数
  • 滚动增加scroll()方法
  • 部分等待方法会返回调用者,方便链式操作
  • ChromiumOptions增加new_env()方法,ini 文件增加new_env参数,用于指定必须用新环境
  • ChromiumOptions增加is_headless属性
  • parent()和 shadow-root 内查找方法增加timeout参数
  • 元素对象各种动作返回元素本身,便于链式操作
  • 元素对象增加timeout属性
  • 页面对象增加console属性,可读取控制台信息
  • 打印NoneElement改成详细信息
  • wait.alert_closed()增加timeout参数
  • auto_port()方法删除tmp_path参数
  • src()方法可获取<link>指向的文件内容
  • 录像改为 H.265 编码
  • shadow_root属性增加等待附加到元素(超时 10 秒)
  • set.cookies()忽略过期 cookie
  • ChromiumFrame对象默认改为单例
  • timeout属性不再接受赋值
  • 优化连接浏览器失败报错
  • 优化css_path
  • 修复new_tab()在访客模式和隐私模式的问题
  • 修复 Frame 对象滚动填入tuple定位符报错问题
  • 修复states.is_displayed有些情况下不正确问题
  • 修复元素link属性不正确的问题
  • 修复 shadow-root 内用 css 找元素的一个问题
  • 修复异域<iframe>内元素屏幕坐标不准问题
  • 修复new_tab=True时下载路径不正确问题
  • 修复attr()填入大写字母无法获取问题

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()增加textshow_jsshow_css参数
  • wait.stop_moving()参数顺序改变
  • tab_ids属性不再屏蔽插件标签页
  • 修复SessionPageget()方法访问本地中文路径问题
  • 等待元素时可抛出页面断开异常

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 无法输入的问题
  • 修复WebPageTabclose()报错问题
  • 修复下拉列表已选中元素再点击会取消的问题
  • 修复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(),参数改为name
  • get_cookies()改为cookies()
  • get_src()改为src()
  • 删除cookies属性
  • get_session_storage()get_local_storage()改为session_storage()local_storage()
  • pageLoad改成page_load
  • set_a_header()remove_a_header()set.header()set.attr()的参数改为name
  • 元素增加value属性和set.value()方法
  • loc_or_eleloc_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_mode
    • get()方法的timeout参数现在可覆盖整个过程
    • timeout参数对非get()方法触发的加载(如点击链接)也能生效
    • SessionPageWebPage的 s 模式,如收到空数据,也会重试
    • SessionPageget()方法可以指向本地文件
    • 新的none加载模式
  • 改进下载管理功能
    • 页面对象删除download_set属性
    • 增加set.download_path()方法
    • 增加set.download_file_name()方法
    • Tab 对象和 Frame 对象也支持download()方法
    • 每个 Tab 对象可单独设置下载路径和重命名文件名
    • 可拦截浏览器下载任务并获取其信息
    • 可取消浏览器下载任务、获取下载进度、等待任务完成
    • 可设置遇到文件夹已存在时的处理方式
    • 默认不启用浏览器下载任务管理
  • 页面对象改进
    • ChromiumPageWebPage改为固定单例
    • get_tab()获取的 Tab 对象默认单例,可用Settings设置允许多例
    • 浏览器页面对象启动时不再接收ChromiumDriver对象
    • WebPage对象的driver_or_options参数改名为chromium_options
    • ChromiumPage对象的addr_driver_opts参数改名为addr_or_opts
    • 页面对象内置动作链
    • ready_stateis_loadingis_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属性
    • ChromiumFrameframe_size属性改为rect.size
    • 优化SessionPageWebPages 模式访问速度
    • WebPage在 d 模式时,post()返回Response对象
  • 标签页管理改进
    • 删除to_tab()方法
    • 删除to_main_tab()set.main_tab()方法
    • 删除main_tab属性
    • new_tab()方法删除switch_to参数
    • new_tab()方法增加new_windowbackgroundnew_context参数
    • rect.borwser_size改为rect.window_size
    • rect.borwser_location改为rect.window_location
    • set.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参数,可指定获取第几个
    • 相对定位第一个参数支持接收序号
    • 位置和大小
      • 删除sizelocationlocations属性,新增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参数改为name
    • get_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_options
      • binary_location项改为browser_path
      • page_load_strategy项改为load_mode
      • debugger_address项改为address
      • arguments项删除'--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类增加prefsflagsexisting_only
      • 增加others类,包含retry_timesretry_interval
    • ChromiumOptions
      • 增加set_flag()clear_flags_in_file(),用于设置实验项
      • 增加existing_only()方法和is_existing_only属性,可指定只接管浏览器而不自动启动新的
      • 增加ignore_certificate_errors()方法,可忽略证书报错
      • 增加retry_timesretry_interval属性和set_retry()方法,可设置重试参数
      • 增加incognito()方法,可设置无痕模式
      • 增加set_tmp_path()方法
      • 增加tmp_pathis_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
    • SessionOptions
      • SessionOptionsset_paths()方法改为set_download_path()
      • 增加retry_timesretry_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参数
    • timeoutsimplicit改成base
    • ActionChains改成Actions
    • 动作链的移动方法增加duration参数
    • 动作链增加input()方法
    • 动作链key_down()key_up()方法可接收按键名称文本
    • 动作链type()方法text参数改为keys
    • get_screenshot()方法增加name属性,可指定文件名
    • 元素的get_screenshot()方法增加scroll_to_center参数,截图前先滚动到页面正中
    • wait.new_tab()方法成功时返回新标签页 id
    • tabs不包含 F12 的窗口
    • DrissionPage.common路径增加wait_until()方法,支持自定义组合等待条件
    • DrissionPage.common路径增加get_blob()方法
    • 异常变化
      • CallMethodError改为CDPError
      • ElementLossError改为ElementLostError
      • ContextLossError改为ContextLostError
      • TabClosedError改为PageDisconnectedError
      • 增加WaitTimeoutError
      • 增加GetDocumentError
      • 增加WrongURLError
      • 增加StorageError
      • 增加CookieFormatError
      • 增加TargetNotFoundError
    • Settings 变化
      • 增加singleton_tab_obj,设置 Tab 对象是否允许多例
      • raise_ele_not_found改为raise_when_ele_not_found
      • raise_click_failed改为raise_when_click_failed
  • 优化
    • MAC 和 Linux 系统添加默认浏览器路径
    • 全面重构对象启动和运行逻辑,大幅提高稳定性
    • 接管或启动浏览器不再要求--remote-allow-orignins参数
    • 所有涉及循环的代码都加上超时设施,杜绝卡死
    • ChromiumFrame进行完全重构,提高稳定性
    • 调整项目结构
  • 问题修复
    • 修复网络连接极不稳定时获取文档失败问题
    • 修复相对定位timeout失效问题
    • 修复 shadow root 内定位元素可能偏差问题
    • 修复异域ChromiumFrame内部元素无法获取屏幕坐标的问题
    • 修复相对路径插件加载失败的问题
    • 所有循环增加超时设置,避免出现卡死
    • 修复元素截图时窗口外部分空白问题
    • 修复 Tab 没有继承 Page 下载路径的问题
    • 修复 <iframe> 内元素获取 href 属性错误问题
    • 修复 cookie 设置 expires 时的问题