mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
458 lines
10 KiB
Markdown
458 lines
10 KiB
Markdown
## class MixPage()
|
||
|
||
MixPage 封装了页面操作的常用功能,可在 driver 和 session 模式间无缝切换。切换的时候会自动同步 cookies。
|
||
获取信息功能为两种模式共有,操作页面元素功能只有 d 模式有。调用某种模式独有的功能,会自动切换到该模式。
|
||
它继承自 DriverPage 和 SessionPage 类,这些功能由这两个类实现,MixPage 作为调度的角色存在。
|
||
|
||
参数说明:
|
||
|
||
- drission: Drission - Drission 对象,如没传入则创建一个。传入 's' 或 'd' 时快速配置相应模式
|
||
- mode: str - 模式,可选 'd' 或 's',默认为'd'
|
||
- timeout: float - 超时时间,driver 模式为查找元素时间,session 模式为连接等待时间
|
||
|
||
## url
|
||
|
||
返回 MixPage 对象当前访问的 url。
|
||
|
||
返回: str
|
||
|
||
## mode
|
||
|
||
返回当前模式( 's' 或 'd' )。
|
||
|
||
返回: str
|
||
|
||
## drission
|
||
|
||
返回当前使用的 Dirssion 对象。
|
||
|
||
返回: Drission
|
||
|
||
## driver
|
||
|
||
返回driver对象,如没有则创建,调用时会切换到 driver 模式。
|
||
|
||
返回: WebDriver
|
||
|
||
## session
|
||
|
||
返回 session 对象,如没有则创建。
|
||
|
||
返回: Session
|
||
|
||
## response
|
||
|
||
返回s模式获取到的 Response 对象,调用时会切换到s模式。
|
||
|
||
返回: Response
|
||
|
||
## cookies
|
||
|
||
返回 cookies,从当前模式获取。
|
||
|
||
返回: [dict, list]
|
||
|
||
## html
|
||
|
||
返回页面 html 文本。
|
||
|
||
返回: str
|
||
|
||
## json
|
||
|
||
当返回内容是json格式时,返回对应的字典。
|
||
|
||
返回: dict
|
||
|
||
## title
|
||
|
||
返回页面 title。
|
||
|
||
返回: str
|
||
|
||
## url_available
|
||
|
||
返回当前 url 有效性。
|
||
|
||
返回: bool
|
||
|
||
## retry_times
|
||
|
||
连接失败时重试次数。
|
||
|
||
返回: int
|
||
|
||
## retry_interval
|
||
|
||
重试连接的间隔。
|
||
|
||
返回: int
|
||
|
||
## wait_object
|
||
|
||
返回WebDriverWait对象,重用避免每次新建对象。
|
||
|
||
返回: WebDriverWait
|
||
|
||
## set_cookies()
|
||
|
||
设置 cookies。
|
||
|
||
参数说明:
|
||
|
||
- cookies: Union[RequestsCookieJar, list, tuple, str, dict] - cookies 信息,可为CookieJar, list, tuple, str, dict
|
||
- refresh: bool - 设置cookies后是否刷新页面
|
||
|
||
返回: None
|
||
|
||
## get_cookies()
|
||
|
||
返回 cookies。
|
||
|
||
参数说明:
|
||
|
||
- as_dict: bool - 是否以 dict 方式返回,默认以 list 返回完整的 cookies
|
||
- all_domains: bool - 是否返回所有域名的 cookies,只有 s 模式下生效
|
||
|
||
返回:cookies 字典或列表
|
||
|
||
## change_mode()
|
||
|
||
切换模式,'d' 或 's'。切换时会把当前模式的 cookies 复制到目标模式。
|
||
|
||
参数说明:
|
||
|
||
- mode: str - 指定目标模式,'d' 或 's'。
|
||
- go: bool - 切换模式后是否跳转到当前 url
|
||
|
||
返回: None
|
||
|
||
## ele()
|
||
|
||
返回页面中符合条件的元素,默认返回第一个。
|
||
如查询参数是字符串,可选 '@属性名:'、'tag:'、'text:'、'css:'、'xpath:'、'.'、'#' 方式。无控制方式时默认用 text 方式查找。
|
||
如是loc,直接按照内容查询。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_str: [Tuple[str, str], str, DriverElement, SessionElement, WebElement] - 元素的定位信息,可以是元素对象,loc 元组,或查询字符串
|
||
- timeout: float - 查找元素超时时间,driver 模式下有效
|
||
|
||
返回: [DriverElement, SessionElement, str] - 元素对象或属性、文本节点文本
|
||
|
||
## eles()
|
||
|
||
根据查询参数获取符合条件的元素列表。查询参数使用方法和 ele 方法一致。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_str: [Tuple[str, str], str] - 查询条件参数
|
||
- timeout: float - 查找元素超时时间,driver 模式下有效
|
||
|
||
返回: [List[DriverElement or str], List[SessionElement or str]] - 元素对象或属性、文本节点文本组成的列表
|
||
|
||
## s_ele()
|
||
|
||
查找第一个符合条件的元素以SessionElement形式返回。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_ele: [Tuple[str, str], str] - 元素的定位信息,可以是 loc 元组,或查询字符串
|
||
|
||
返回: [SessionElement, str]
|
||
|
||
## s_eles()
|
||
|
||
查找所有符合条件的元素以SessionElement列表形式返回。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_ele: [Tuple[str, str], str] - 查询条件参数
|
||
|
||
返回: List[SessionElement or str]
|
||
|
||
## cookies_to_session()
|
||
|
||
从 WebDriver 对象复制 cookies 到 Session 对象。
|
||
|
||
参数说明:
|
||
|
||
- copy_user_agent: bool - 是否同时复制 user agent
|
||
|
||
返回: None
|
||
|
||
## cookies_to_driver()
|
||
|
||
从 Session 对象复制 cookies 到 WebDriver 对象。
|
||
|
||
参数说明:
|
||
|
||
- url: str - cookies 的域或 url
|
||
|
||
返回: None
|
||
|
||
## get()
|
||
|
||
跳转到一个url,跳转前先同步 cookies,跳转后返回目标 url 是否可用。
|
||
|
||
参数说明:
|
||
|
||
- url: str - 目标 url
|
||
- go_anyway: bool - 是否强制跳转。若目标 url 和当前 url 一致,默认不跳转。
|
||
- show_errmsg: bool - 是否显示和抛出异常
|
||
- retry: int - 连接出错时重试次数
|
||
- interval: float - 重试间隔(秒)
|
||
- **kwargs - 用于 requests 的连接参数
|
||
|
||
返回: [bool, None] - url 是否可用
|
||
|
||
## post()
|
||
|
||
以 post 方式跳转,调用时自动切换到 session 模式。
|
||
|
||
参数说明:
|
||
|
||
- url: str - 目标 url
|
||
- data: dict - 提交的数据
|
||
- go_anyway: bool - 是否强制跳转。若目标 url 和当前 url 一致,默认不跳转。
|
||
- show_errmsg: bool - 是否显示和抛出异常
|
||
- retry: int - 连接出错时重试次数
|
||
- interval: float - 重试间隔(秒)
|
||
- **kwargs - 用于 requests 的连接参数
|
||
|
||
返回: [bool, None] - url 是否可用
|
||
|
||
## download()
|
||
|
||
下载一个文件,返回是否成功和下载信息字符串。改方法会自动避免和目标路径现有文件重名。
|
||
|
||
参数说明:
|
||
|
||
- file_url: str - 文件 url
|
||
- goal_path: str - 存放路径,默认为 ini 文件中指定的临时文件夹
|
||
- rename: str - 重命名文件,不改变扩展名
|
||
- file_exists: str - 若存在同名文件,可选择 'rename', 'overwrite', 'skip' 方式处理
|
||
- post_data: dict - post 方式时提交的数据
|
||
- show_msg: bool - 是否显示下载信息
|
||
- show_errmsg: bool - 是否显示和抛出异常
|
||
- **kwargs - 用于 requests 的连接参数
|
||
|
||
返回: Tuple[bool, str] - 下载是否成功(bool)和状态信息(成功时信息为文件路径)的元组
|
||
|
||
以下方法和属性只有 driver 模式下生效,调用时会自动切换到 driver 模式
|
||
|
||
***
|
||
|
||
## tabs_count
|
||
|
||
返回标签页数量。
|
||
|
||
返回: int
|
||
|
||
## tab_handles
|
||
|
||
返回所有标签页 handle 列表。
|
||
|
||
返回: list
|
||
|
||
## current_tab_num
|
||
|
||
返回当前标签页序号。
|
||
|
||
返回: int
|
||
|
||
## current_tab_handle
|
||
|
||
返回当前标签页 handle。
|
||
|
||
返回: str
|
||
|
||
## wait_ele()
|
||
|
||
等待元素从 dom 删除、显示、隐藏。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_ele: [str, tuple, DriverElement, WebElement] - 元素查找方式,与ele()相同
|
||
- mode: str - 等待方式,可选:'del', 'display', 'hidden'
|
||
- timeout: float - 等待超时时间
|
||
|
||
返回: bool - 等待是否成功
|
||
|
||
## check_page()
|
||
|
||
d 模式时检查网页是否符合预期。默认由 response 状态检查,可重载实现针对性检查。
|
||
|
||
参数说明:
|
||
|
||
- by_requests:bool - 强制使用内置 response 进行检查
|
||
|
||
返回: [bool, None] - bool 为是否可用,None 为未知
|
||
|
||
## run_script()
|
||
|
||
执行JavaScript代码。
|
||
|
||
参数说明:
|
||
|
||
- script: str - JavaScript 代码文本
|
||
- *args - 传入的参数
|
||
|
||
返回: Any
|
||
|
||
## create_tab()
|
||
|
||
新建并定位到一个标签页,该标签页在最后面。
|
||
|
||
参数说明:
|
||
|
||
- url: str - 新标签页跳转到的网址
|
||
|
||
返回: None
|
||
|
||
## close_current_tab()
|
||
|
||
关闭当前标签页。
|
||
|
||
返回: None
|
||
|
||
## close_other_tabs()
|
||
|
||
关闭传入的标签页以外标签页,默认保留当前页。可传入列表或元组。
|
||
|
||
参数说明:
|
||
|
||
- num_or_handles:[int, str] - 要保留的标签页序号或 handle,可传入 handle 组成的列表或元组
|
||
|
||
返回: None
|
||
|
||
## to_tab()
|
||
|
||
跳转到标签页。
|
||
|
||
参数说明:
|
||
|
||
- num_or_handle:[int, str] - 标签页序号或handle字符串,序号第一个为0,最后为-1
|
||
|
||
返回: None
|
||
|
||
## to_frame()
|
||
|
||
跳转到 frame,默认跳转到最高层级,兼容 selenium 原生参数。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_ele: [int, str, tuple, WebElement, DriverElement] - 查找 iframe 元素的条件,可接收 iframe 序号(0开始)、id 或
|
||
name、查询字符串、loc参数、WebElement对象、DriverElement 对象,传入 'main' 跳到最高层,传入 'parent' 跳到上一层
|
||
|
||
示例:
|
||
|
||
- to_iframe('tag:iframe') - 通过传入 iframe 的查询字符串定位
|
||
- to_iframe('iframe_id') - 通过 iframe 的 id 属性定位
|
||
- to_iframe('iframe_name') - 通过 iframe 的 name 属性定位
|
||
- to_iframe(iframe_element) - 通过传入元素对象定位
|
||
- to_iframe(0) - 通过 iframe 的序号定位
|
||
- to_iframe('main') - 跳到最高层
|
||
- to_iframe('parent') - 跳到上一层
|
||
|
||
返回: 自己,用于链式操作进行下一步元素查找
|
||
|
||
## scroll_to_see()
|
||
|
||
滚动直到元素可见。
|
||
|
||
参数说明:
|
||
|
||
- loc_or_ele: [str, tuple, WebElement, DriverElement] - 查找元素的条件,和 ele() 方法的查找条件一致。
|
||
|
||
返回: None
|
||
|
||
## scroll_to()
|
||
|
||
滚动页面,按照参数决定如何滚动。
|
||
|
||
参数说明:
|
||
|
||
- mode: str - 滚动的方向,top、bottom、rightmost、leftmost、up、down、left、right
|
||
- pixel: int - 滚动的像素
|
||
|
||
返回: None
|
||
|
||
## refresh()
|
||
|
||
刷新页面。
|
||
|
||
返回: None
|
||
|
||
## back()
|
||
|
||
页面后退。
|
||
|
||
返回: None
|
||
|
||
## set_window_size()
|
||
|
||
设置窗口大小,默认最大化。
|
||
|
||
参数说明:
|
||
|
||
- x: int - 目标宽度
|
||
- y: int - 目标高度
|
||
|
||
返回: None
|
||
|
||
## screenshot()
|
||
|
||
网页截图,返回截图文件路径。
|
||
|
||
参数说明:
|
||
|
||
- path: str - 截图保存路径,默认为 ini 文件中指定的临时文件夹
|
||
- filename: str - 截图文件名,默认为页面 title 为文件名
|
||
|
||
返回: str
|
||
|
||
## chrome_downloading()
|
||
|
||
返回浏览器下载中的文件列表。
|
||
|
||
参数说明:
|
||
|
||
- download_path: str - 下载文件夹路径
|
||
|
||
返回:list
|
||
|
||
## process_alert()
|
||
|
||
处理提示框。
|
||
|
||
参数说明:
|
||
|
||
- mode: str - 'ok' 或 'cancel',若输入其它值,不会按按钮但依然返回文本值
|
||
- text: str - 处理 prompt 提示框时可输入文本
|
||
|
||
返回: [str, None] - 提示框内容文本
|
||
|
||
## close_driver()
|
||
|
||
关闭 driver 及浏览器。
|
||
|
||
返回: None
|
||
|
||
## close_session()
|
||
|
||
关闭 session。
|
||
|
||
返回: None
|
||
|
||
## hide_browser()
|
||
|
||
隐藏浏览器窗口。
|
||
|
||
返回: None
|
||
|
||
## show_browser()
|
||
|
||
显示浏览器窗口。
|
||
|
||
返回: None |