2. _pages目录
_pages目录结构
_pages目录的文件除了以上四个文件外,还有chromium_frame.py和chromium_tab.py文件。
2.1 chromium_base.py
chromium_base.py定义了ChromiumBase类, Timeout类和Alert类,还有一个方法。
ChromiumBase类,继承了BasePage类,是BasePage类的子类,其有标签页(Tab)、Frame、页面基类(page)。
主要类和函数 | 功能 |
ChromiumBase(BasePage) | |
Timeout(object) | |
Alert(object) | |
close_privacy_dialog(page, tid) |
2.1.1 ChromiumBase类
ChromiumBase(BasePage)
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__init__(self, address, tab_id=None, timeout=None) | address: 浏览器 ip:port tab_id: 要控制的标签页id,不指定默认为激活的 timeout: 超时时间(秒) | |
run_cdp(cmd, **cmd_args) | 执行Chrome DevTools Protocol语句 cmd: 协议项目 cmd_args: 参数 return: 执行的结果 | |
run_cdp_loaded(cmd, **cmd_args) | 执行Chrome DevTools Protocol语句,执行前等待页面加载完毕 | |
run_js(script, *args, as_expr=False, timeout=None) | 运行javascript代码 script:js文本或js文件路径 args:参数,按顺序在js文本中对应arguments[0],arguments[1]... as_expr:是否作为表达式运行,为True时args无效 timeout:js超时时,为None则使用页面timeouts.script设置 return: 运行的结果 | |
run_js_loaded(script, *args,as_expr=False, timeout=None) | 运行javascript代码,执行前等待页面加载完毕 | |
run_async_js(script, *args, as_expr=False) | 以异步方式执行js代码或js文件路径 script: js文本 args: 参数,按顺序在js文本中对应arguments[0]、arguments[1]... as_expr: 是否作为表达式运行,为True时args无效 return: None | |
get(url, show_errmsg=False, retry=None, interval=None, timeout=None) | 访问url url: 目标url show_errmsg: 是否显示和抛出异常 retry: 重试次数,为None时使用页面对象retry_times属性值 interval: 重试间隔,为None时使用页面对象retry_interval属性值 timeout: 连接超时时间,为None时使用页面对象timeouts.page_load属性值 return: 目标url是否可用 | |
cookies(as_dict=False, all_domains=False, all_info=False) | 回cookies信息 as_dict:为True时以dict格式返回,为False时返回list且all_info无效 all_domains:是否返回所有域的cookies all_info:是否返回所有信息,为False时只返回name、value、domain Return:cookies信息 | |
| 返回第一个符合条件的元素对象 locator:定位符或元素对象 index: 获取第几个,从1开始,可传入负数获取倒数第几个 timeout: 查找元素超时时间,默认与页面等待时间一致 return: ChromiumElement对象 | 调用父类方法_ele() |
eles(locator,timeout=None) | 返回取所有符合条件的元素对象 locator:定位符或元素对象 timeout: 查找元素超时时间 return:ChromiumElement对象组成的列表 | 重写了此方法,需回调父类方法 |
s_ele(locator=None, index=1) | 查找一个符合条件的元素以SessionElement形式返回,处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 return: SessionElement对象或属性、文本 | 重写了此方法,需回调父类方法 |
s_eles(locator=None) | 找所有符合条件的元素以SessionElement列表形式返回 locator: 元素的定位信息,可以是loc元组,或查询字符串 return: SessionElement对象组成的列表 | 重写了此方法,需回调父类方法 |
refresh(ignore_cache=False) | 刷新当前页面 ignore_cache: 是否忽略缓存 return: None | |
forward(steps=1) | 在浏览历史中前进若干步 steps: 前进步数 return: None | |
back(steps=1) | 在浏览历史中后退若干步 steps: 后退步数 return: None | |
stop_loading() | 页面停止加载 | |
remove_ele(loc_or_ele) | 从页面上删除一个元素 loc_or_ele: 元素对象或定位符 return: None | |
add_ele(html_or_info, insert_to=None, before=None) | 新建一个元素 html_or_info: 新元素的html文本或信息。信息格式为:(tag, {attr1: value, ...}) insert_to: 插入到哪个元素中,可接收元素对象和定位符,为None且为html添加到body,不为html不插入 before: 在哪个子节点前面插入,可接收对象和定位符,为None插入到父元素末尾 return: 元素对象 |
2.1.2 Timeout类
用于保存d模式timeout信息的类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__init__(self, page, base=None, page_load=None, script=None, implicit=None) | page: ChromiumBase页面 base: 默认超时时间,默认10s age_load: 页面加载超时时间,默认30s script: js超时时间,默认30s | |
__repr__(self) |
2.1.3 Alert类
Alert类用于保存alert信息的类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__init__(self) | self.activated = False self.text = None self.type = None self.defaultPrompt = None self.response_accept = None self.response_text = None self.handle_next = None self.next_text = None self.auto = None |
2.1.4 函数
函数 | 功能 | 说明 |
close_privacy_dialog(page, tid) | 关闭隐私声明弹窗 page: ChromiumBase对象 tid: tab id return: None |
2.2 chromium_page.py
chromium_page.py定义了ChromiumPage类和三个方法。
名称 | 功能 | 说明 |
ChromiumPage(ChromiumBase) | 用于管理浏览器的类 | 创建浏览器驱动 |
handle_options(addr_os_opts) | 设置浏览器启动属性 | |
run_browser(chromium_options) | 连接浏览器 | |
get_rename(original, rename) |
2.2.1 ChromiumPage类
ChromiumPage(ChromiumBase)类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__new__(cls, addr_or_opts=None, tab_id=None, timeout=None, addr_driver_opts=None) | addr_or_opts:浏览器地址:端口、ChromiumOptions对象或端口数字(int) tab_id:要控制的标签页id,不指定默认为激活的 timeout:超时时间(秒) | 返回一个浏览器控制对象,其是ChromiumBase类的子类 |
__init__(self, addr_or_opts=None, tab_id=None, timeout=None, addr_driver_opts=None) | 同上 | 创建实例后自动调用,初始化实例属性,无返回值,重写了此方法,需回调父类方法 |
save(self, path=None, name=None, as_pdf=False, **kwargs) | 把当前页面保存为文件,如果path和name参数都为None,只返回文本 Path:保存路径,为None且name不为None时保存在当前路径 Name:文件名,为None且path不为None时用title属性值 as_pdf:为Ture保存为pdf,否则为mhtml且忽略kwargs参数 Kwargs:pdf生成参数 Return:as_pdf为True时返回bytes,否则返回文件文本 | |
get_tab(id_or_num=None, title=None, url=None, tab_type='page', as_id=False) | 取一个标签页对象,id_or_num不为None时,后面几个参数无效 id_or_num: 要获取的标签页id或序号,序号从1开始,可传入负数获取倒数第几个,不是视觉排列顺序,而是激活顺序 title: 要匹配title的文本,模糊匹配,为None则匹配所有 url: 要匹配url的文本,模糊匹配,为None则匹配所有 tab_type: tab类型,可用列表输入多个,如 'page', 'iframe' 等,为None则匹配所有 as_id: 是否返回标签页id而不是标签页对象 return: ChromiumTab对象 | 标签对象是指打开的网页 |
get_tabs(title=None, url=None, tab_type='page', as_id=False) | 查找符合条件的tab,返回它们组成的列表 title: 要匹配title的文本,模糊匹配,为None则匹配所有 url: 要匹配url的文本,模糊匹配,为None则匹配所有 tab_type: tab类型,可用列表输入多个,如 'page', 'iframe' 等,为None则匹配所有 as_id: 是否返回标签页id而不是标签页对象 return: ChromiumTab对象组成的列表 | 标签对象是指打开的网页 Browser_id相同,但tab_id不同 |
new_tab(url=None, new_window=False, background=False, new_context=False) | 建一个标签页 url: 新标签页跳转到的网址 new_window: 是否在新窗口打开标签页 background: 是否不激活新标签页,如new_window为True则无效 new_context: 是否创建新的上下文 return: 新标签页对象 | 虽然打开了一个新的浏览器,但浏览器的browser_id相同 |
close() | 关闭Page管理的页标签 | 关闭tab_id页标签,调用close_tabs() |
close_tabs(tab_or_ids=None, others=False) | 关闭传入的标签页,默认关闭当前页。可传入多个 tabs_or_ids: 要关闭的标签页对象或id,可传入列表或元组,为None时关闭当前页 others: 是否关闭指定标签页之外的 return: None | |
quit(timeout=5, force=True) | 关闭浏览器 timeout: 等待浏览器关闭超时时间 force: 关闭超时是否强制终止进程 | |
close_other_tabs(tabs_or_ids=None) | 闭传入的标签页以外标签页,默认保留当前页,可传入多个。 tabs_or_ids:要保留的标签页对象或id,可传入列表或元组,为None时保存当前页 return: None | 调用close_tabs(tabs_or_ids, True) |
find_tabs(title=None, url=None, tab_type=None, single=True) | 查找符合条件的tab,返回它们组成的列表 title: 要匹配title的文本 url: 要匹配url的文本 tab_type: tab类型,可用列表输入多个 single: 是否返回首个结果的id,为False返回所有信息 return: tab id或tab列表 | |
本类定义的属性 | ||
set | ||
wait | 返回用于等待的对象 | |
browser | 返回用于控制浏览器cdp的driver | |
tab_count | 返回标签页数量 | |
tab_ids | 返回所有标签页id组成的列表 | |
latest_tab | 最新的标签页,最新标签页指最后创建或最后被激活的 当Settings.singleton_tab_obj==True时返回Tab对象,否则返回tab id | |
process_id | 返回浏览器进程id | |
browser_version | 返回所控制的浏览器版本号 | |
tabs | 回所有标签页id组成的列表 |
2.2.2 函数
chromium_page.py定义的三个函数
函数 | 功能 | 说明 |
handle_options(addr_or_opts) | 设置浏览器启动属性 addr_or_opts: 'ip:port'、ChromiumOptions、Driver return: 返回ChromiumOptions对象 | |
run_browser(chromium_options) | 连接浏览器 | |
get_rename(original, rename) | 如果rename不包括后缀,则以原文件名的后缀为准 |
2.3 session_page.py
Session_page.py定义的类和函数。
序号 | 名称 | 说明 |
2.3.1 | SessionPage(BasePage) | |
2.3.2.1 | check_headers(kwargs,headers, args) | 检查kwargs或headers中是否有arg所示属性 |
2.3.2.2 | set_charset(response) | 设置Response对象的编码 |
2.2.1 SessionPage类
SessionPage(BasePage)类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__init__(self, session_or_options=None, timeout=None) | session_or_options: Session对象或SessionOptions对象 timeout: 连接超时时间(秒),为None时从ini文件读取或默认10 | 创建实例后自动调用,初始化实例属性,无返回值,重写了此方法,需回调父类方法 |
get(url, show_errmsg=False, retry=None, interval=None, timeout=None, **kwargs) | 跳转至url show_errmsg:是否显示和抛出异常 retry:试次数,为None时使用页面对象retry_times属性值 interval:重试间隔,为None时使用页面对象retry_interval属性值 timeout:连接超时,为None时使用页面对象timeouts.page_load属性值 **kwargs:连接参数,s s模式专用 return:url是否可用,d模式返回None时表示不确定 | |
post( url show_errmsg=False, retry=None, interval=None, **kwargs) | 用POST方法跳转至url show_errmsg:是否显示和抛出异常 retry:试次数,为None时使用页面对象retry_times属性值 interval:重试间隔,为None时使用页面对象retry_interval属性值 **kwargs:连接参数 return:s模式时返回url是否可用,d模式时返回获取到的Response对象 | |
| 返回第一个符合条件的元素、属性或节点文本 locator::元素的定位信息,可以是元素对象,loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本 | 回调父类方法_ele() |
eles(locator,timeout=None) | 返回所有符合条件的元素、属性或节点文本 locator::元素的定位信息,可以是元素对象,loc元组,或查询字符串 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本组成的列表 | 回调父类方法_ele() |
s_ele(locator=None, index=1) | 查找第一个符合条件的元素以SessionElement形式返回,d模式处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 return: SessionElement对象或属性、文本 | 调用_elements.session_element.make_session_ele() |
s_ele(locator=None) | 找所有符合条件的元素以SessionElement形式返回,d模式处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 return: SessionElement对象或属性、文本组成的列表 | 回调父类方法_ele() |
cookies(as_dict=False, all_domains=False, all_info=False) | 返回cookies as_dict:为True时以dict格式返回,为False时返回list且all_info无效 all_domains:是否返回所有域的cookies all_info:是否返回所有信息,False则只返回name、value、domain Return:cookies信息 | |
close() | 关闭Session对象 | |
get_cookies(as_dict=False, all_domains=False, all_info=False) | 返回cookies as_dict:为True时以dict格式返回,为False时返回list且all_info无效 all_domains:是否返回所有域的cookies all_info:是否返回所有信息,False则只返回name、value、domain Return:cookies信息 | 调用cookies()方法 |
本类定义的属性 | ||
title | 返回网页标题 | |
url | 返回当前访问的url | |
raw_data | 返回页面原始数据(二进制数据) | 返回SessionPage对象中response.content |
html | 返回html文本 | |
json | ||
user_agent | ||
session | 返回session对象 | |
response | 返回Response对象 | |
encoding | 返回设置的编码 | |
set | 返回用于设置的对象 |
2.3.2 函数
session_page.py定义的两个函数
函数 | 功能 | 说明 |
check_headers(kwargs, headers, arg) | 检查kwargs或headers中是否有arg所示属性 | True/False |
set_charset(response) | 设置Response对象的编码 |
2.4 web_page.py
2.4.1 WebPage(SessionPage, ChromiumPage, BasePage)类
属性 | 功能 | 说明 |
本类定义的方法 | ||
__new__(cls,mode='d', timeout=None, chromium_options=None, session_or_options=None, driver_or_options=None) | mode:d为driver模式,s为seesion模式 timeout:d模式时为寻找元素时间,s模式时为连接时间,默认10秒 chromium_options:Driver对象,只使用s模式时应传入False driver_or_options:Session对象或SessionOptions对象,只使用d模式时应传入False | 返回一个浏览器控制对象,既具有ChromiumPage的属性方法,又有SessionPage的属性方法 创建实例时自动调用,重写了此方法,需回调父类方法 |
__init__(self,mode='d', timeout=None, chromium_options=None, session_or_options=None, driver_or_options=None) | 同上 | 创建实例后自动调用,初始化实例属性,无返回值,重写了此方法,需回调父类方法 |
timeout(second) | 设置超时时间,单位为秒 | 调用实例的set.timeouts(base=second) |
get(url, show_errmsg=False, retry=None, interval=None, timeout=None, **kwargs) | 跳转至url show_errmsg:是否显示和抛出异常 retry:试次数,为None时使用页面对象retry_times属性值 interval:重试间隔,为None时使用页面对象retry_interval属性值 timeout:连接超时,为None时使用页面对象timeouts.page_load属性值 **kwargs:连接参数,s s模式专用 return:url是否可用,d模式返回None时表示不确定 | 重写了此方法,需回调父类方法 |
post( url show_errmsg=False, retry=None, interval=None, **kwargs) | 用POST方法跳转至url show_errmsg:是否显示和抛出异常 retry:试次数,为None时使用页面对象retry_times属性值 interval:重试间隔,为None时使用页面对象retry_interval属性值 **kwargs:连接参数 return:s模式时返回url是否可用,d模式时返回获取到的Response对象 | 重写了此方法,需回调父类方法 |
index=1, timeout=None) | 返回第一个符合条件的元素、属性或节点文本 locator::元素的定位信息,可以是元素对象,loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本 | 重写了此方法,需回调父类方法 |
eles(locator,timeout=None) | 返回所有符合条件的元素、属性或节点文本 locator::元素的定位信息,可以是元素对象,loc元组,或查询字符串 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本 | 重写了此方法,需回调父类方法 |
s_ele(locator=None, index=1) | 查找第一个符合条件的元素以SessionElement形式返回,d模式处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 return: SessionElement对象或属性、文本 | 重写了此方法,需回调父类方法 |
s_eles(locator=None) | 找所有符合条件的元素以SessionElement形式返回,d模式处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 return: SessionElement对象或属性、文本组成的列表 | 重写了此方法,需回调父类方法 |
change_mode(mode=None, go=True, copy_cookies=True) | 切换模式,接收's'或'd',除此以外的字符串会切换为d模式 如copy_cookies为True,切换时会把当前模式的cookies复制到目标模式 切换后,如果go是True,调用相应的get函数使访问的页面同步 mode: 模式字符串 go: 是否跳转到原模式的url copy_cookies: 是否复制cookies到目标模式 return: None | |
cookies_to_session(copy_user_agent=True) | 把driver对象的cookies复制到session对象 copy_user_agent: 是否复制ua信息 return: None | |
cookies_to_browser() | 把session对象的cookies复制到浏览器 | |
cookies(as_dict=False, all_domains=False, all_info=False) | 返回cookies as_dict:为True时以dict格式返回,为False时返回list且all_info无效 all_domains:是否返回所有域的cookies all_info:是否返回所有信息,False则只返回name、value、domain Return:cookies信息 | 重写了此方法,需回调父类方法 |
get_tab(id_or_num=None, title=None, url=None, tab_type='page', as_id=False) | 取一个标签页对象,id_or_num不为None时,后面几个参数无效 id_or_num: 要获取的标签页id或序号,序号从1开始,可传入负数获取倒数第几个,不是视觉排列顺序,而是激活顺序 title: 要匹配title的文本,模糊匹配,为None则匹配所有 url: 要匹配url的文本,模糊匹配,为None则匹配所有 tab_type: tab类型,可用列表输入多个,如 'page', 'iframe' 等,为None则匹配所有 as_id: 是否返回标签页id而不是标签页对象 return: WebPageTab对象 | 标签对象是指打开的网页 |
get_tabs(self, title=None, url=None, tab_type='page', as_id=False) | 查找符合条件的tab,返回它们组成的列表 title: 要匹配title的文本,模糊匹配,为None则匹配所有 url: 要匹配url的文本,模糊匹配,为None则匹配所有 tab_type: tab类型,可用列表输入多个,如 'page', 'iframe' 等,为None则匹配所有 as_id: 是否返回标签页id而不是标签页对象 return: ChromiumTab对象组成的列表 | 标签对象是指打开的网页 Browser_id相同,但tab_id不同 |
new_tab(url=None, new_window=False, background=False, new_context=False) | 建一个标签页 url: 新标签页跳转到的网址 new_window: 是否在新窗口打开标签页 background: 是否不激活新标签页,如new_window为True则无效 new_context: 是否创建新的上下文 return: 新标签页对象 | 虽然打开了一个新的浏览器,但浏览器的browser_id相同 |
close_driver() | 关闭driver及浏览器 | 切换到s模式,调用实例的driver.run(‘Browser.close’)或_driver.stop(),_driver=None,_has_driver=Nine |
close_session() | 关闭session | |
close() | 关闭标签页和session | |
quit(timeout=5, force=True) | 关闭浏览器和session timeout: 等待浏览器关闭超时时间 force: 关闭超时是否强制终止进程 | |
get_cookies(as_dict=False, all_domains=False, all_info=False) | 返回cookies as_dict:为True时以dict格式返回,为False时返回list且all_info无效 all_domains:是否返回所有域的cookies all_info:是否返回所有信息,False则只返回name、value、domain Return:cookies信息 | 调用cookies()方法 |
本类定义的属性 | ||
url | 返回当前WebPage对象的url | string |
_browser_url | 返回浏览器当前页面的url | string |
title | 返回浏览器当前页面的url | string |
raw_data | 返回页面原始数据数据,与response.content功能类似 | text |
html | 返回页面的html文本 | text |
json | 返回内容是json格式时,返回其字典 | dict |
response | 返回s模式时的Response对象 | class <response> |
mode | 返回当时模式,WebPage/ChromiumPage时为d,SessionPage时为s | string |
user_agent | 返回当前user agent | string |
session | 回Session对象,如未初始化则按配置信息创建 | |
timeout | 返回timeout设置 | 来源于实例.timeouts.base |
browser.id | WebPage实例的浏览器编号 | 继承而来 |
tab_id | WebPage实例的页面编号 | 继承而来 |
2.5 chromium_frame.py
chromium_frame.py文件定的类和函数:
函数 | 功能 | 说明 |
ChromiumFrame(ChromiumBase) |
2.5.1 ChromiumFrame类
ChromiumFrame(ChromiumBase)类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__init__(self, owner, ele, info=None) | owner: frame所在的页面对象 ele: frame所在元素 info: frame所在元素信息 | |
reflesh() | 刷新frame页面 | |
property(name) | 返回frame元素一个property属性值 name: 属性名 return: 属性值文本,没有该属性返回None | |
attr(name) | 返回frame元素一个attribute属性值 name: 属性名 return: 属性值文本,没有该属性返回None | |
remove_attr(name) | 删除frame元素attribute属性 name: 属性名 return: None | |
run_js(script, *args, as_expr=False, timeout=None) | 运行javascript代码 script: js文本 args: 参数,按顺序在js文本中对应arguments[0]、arguments[1]... as_expr: 是否作为表达式运行,为True时args无效 timeout: js超时时间(秒),为None则使用页面timeouts.script设置 return: 运行的结果 | |
parent(level_or_loc=1, index=1) | 返回上面某一级父元素,可指定层数或用查询语法定位 level_or_loc: 第几级父元素,1开始,或定位符 index: 当level_or_loc传入定位符,使用此参数选择第几个结果,1开始 return: 上级元素对象 | |
prev(locator='', index=1, timeout=0, ele_only=True) | 返回当前元素前面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个 locator: 用于筛选的查询语法 index: 前面第几个查询结果,1开始 timeout: 查找节点的超时时间(秒) ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 return: 同级元素或节点 | |
next(locator='', index=1, timeout=0, ele_only=True) | 返回当前元素后面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个 :param locator: 用于筛选的查询语法 :param index: 后面第几个查询结果,1开始 :param timeout: 查找节点的超时时间(秒) :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 同级元素或节点 | |
before(locator='',index=1,timeout=None,ele_only=True) | 返回文档中当前元素前面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个 查找范围不限同级元素,而是整个DOM文档 :param locator: 用于筛选的查询语法 :param index: 前面第几个查询结果,1开始 :param timeout: 查找节点的超时时间(秒) :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 本元素前面的某个元素或节点 | |
after(locator='',index=1,timeout=None,ele_only=True) | 返回文档中此当前元素后面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个 查找范围不限同级元素,而是整个DOM文档 :param locator: 用于筛选的查询语法 :param index: 后面第几个查询结果,1开始 :param timeout: 查找节点的超时时间(秒) :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 本元素后面的某个元素或节点 | |
prevs(self, locator='', timeout=0, ele_only=True) | 返回当前元素前面符合条件的同级元素或节点组成的列表,可用查询语法筛选 :param locator: 用于筛选的查询语法 :param timeout: 查找节点的超时时间(秒) :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 同级元素或节点文本组成的列表 | |
nexts(self, locator='', timeout=0, ele_only=True) | 返回当前元素后面符合条件的同级元素或节点组成的列表,可用查询语法筛选 :param locator: 用于筛选的查询语法 :param timeout: 查找节点的超时时间(秒) :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 同级元素或节点文本组成的列表 | |
befores(self, locator='', timeout=None, ele_only=True) | 返回文档中当前元素前面符合条件的元素或节点组成的列表,可用查询语法筛选 查找范围不限同级元素,而是整个DOM文档 :param locator: 用于筛选的查询语法 :param timeout: 查找节点的超时时间 :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 本元素前面的元素或节点组成的列表 | |
afters(locator='', timeout=None, ele_only=True) | 返回文档中当前元素后面符合条件的元素或节点组成的列表,可用查询语法筛选 查找范围不限同级元素,而是整个DOM文档 :param locator: 用于筛选的查询语法 :param timeout: 查找节点的超时时间 :param ele_only: 是否只获取元素,为False时把文本、注释节点也纳入 :return: 本元素前面的元素或节点组成的列表 | |
get_screenshot(path=None,name=None,as_bytes=None,as_base64=None) | 对页面进行截图,可对整个网页、可见网页、指定范围截图。对可视范围外截图需要90以上版本浏览器支持 :param path: 文件保存路径 :param name: 完整文件名,后缀可选 'jpg','jpeg','png','webp' :param as_bytes: 是否以字节形式返回图片,可选 'jpg','jpeg','png','webp',生效时path参数和as_base64参数无效 :param as_base64: 是否以base64字符串形式返回图片,可选 'jpg','jpeg','png','webp',生效时path参数无效 :return: 图片完整路径或字节文本 | |
属性 | ||
scroll | 返回用于滚动的对象 | |
set | ||
states | 返回用于获取状态信息的对象 | |
wait | ||
rect | ||
listen | ||
page | 返回所属Page对象,即_page属性 | |
owner | 回所属页面对象,即frame_ele.owner属性 | |
frame_ele | 返回总页面上的frame元素,即_frame_ele属性 | |
tag | 返回元素tag对象,即frame_ele.tag | |
url | 返回当前frame访问的url | |
html | 返回元素outerHTML文本 | |
Inner_html | 返回元素innerHTML文本 | |
title | 返回页面的标题 | |
attrs | 返回frame元素所有attribute属性 | |
active_ele | 返回当前焦点所在元素 | |
xpath | 返回frame的xpath绝对路径 | |
css_path | 返回frame的css selector绝对路径 | |
tab_id | 返回frame所在tab的id | |
download_path | 即_download_path属性 | |
page_size | 返回frame内页面尺寸,格式:(宽,, 高) | |
size | 返回frame元素大小 | |
location | 返回frame元素左上角的绝对坐标 | |
locations | 返回用于获取元素位置的对象 |
2.6 chromium_tab.py
chromnium_tab.py文件定义的类和函数:
序号 | 名称 | 说明 |
2.6.1 | ||
2.6.2 |
2.6.1 ChromiunmTab类
继承了ChromiumBase类,实现浏览器标签页的类
ChromiumTab(ChromiumBase)类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__new__(cls, page, tab_id) | page: ChromiumPage对象 tab_id: 要控制的标签页id | |
__init__(self, page, tab_id) | page: ChromiumPage对象 tab_id: 要控制的标签页id | |
close() | 关闭当前标签页 | page.close_tabs(self.tab_id) |
save(path=None,name=None,as_pdf=False,**kwargs) | 把当前页面保存为文件,如果path和name参数都为None,只返回文本 path: 保存路径,为None且name不为None时保存在当前路径 name: 文件名,为None且path不为None时用title属性值 as_pdf: 为Ture保存为pdf,否则为mhtml且忽略kwargs参数 kwargs: pdf生成参数 return: as_pdf为True时返回bytes,否则返回文件文本 | |
本类定义的属性 | ||
page | 返回总体page对象 | |
set | ||
wait |
2.6.2 WebPageTab类
WebPageTab(SessionPage, ChromiumTab, BasePage)
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__init__(self, page, tab_id) | page: WebPagePage对象 tab_id: 要控制的标签页id | |
close() | 关闭当前标签页 | page.close_tabs(self.tab_id) |
save(path=None,name=None,as_pdf=False,**kwargs) | 把当前页面保存为文件,如果path和name参数都为None,只返回文本 path: 保存路径,为None且name不为None时保存在当前路径 name: 文件名,为None且path不为None时用title属性值 as_pdf: 为Ture保存为pdf,否则为mhtml且忽略kwargs参数 kwargs: pdf生成参数 return: as_pdf为True时返回bytes,否则返回文件文本 | |
get(url, show_errmsg=False, retry=None, interval=None, timeout=None, **kwargs) | 跳转到一个url url: 目标url show_errmsg: 是否显示和抛出异常 retry: 重试次数,为None时使用页面对象retry_times属性值 interval: 重试间隔(秒),为None时使用页面对象retry_interval属性值 timeout: 连接超时时间(秒),为None时使用页面对象timeouts.page_load属性值 kwargs: 连接参数,s模式专用 return: url是否可用,d模式返回None时表示不确定 | |
Post(url, show_errmsg=False, retry=None, interval=None, **kwargs) | 返回第一个符合条件的元素、属性或节点文本 locator: 元素的定位信息,可以是元素对象,loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本 | |
| 返回第一个符合条件的元素、属性或节点文本 locator::元素的定位信息,可以是元素对象,loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本 | 重写了此方法,需回调父类方法 |
eles(locator,timeout=None) | 返回所有符合条件的元素、属性或节点文本 locator::元素的定位信息,可以是元素对象,loc元组,或查询字符串 timeout: 查找元素超时时间,默认与页面等待时间一致 return: 元素对象或属性、文本节点文本 | 重写了此方法,需回调父类方法 |
s_ele(locator=None, index=1) | 查找第一个符合条件的元素以SessionElement形式返回,d模式处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 index: 获取第几个,从1开始,可传入负数获取倒数第几个 return: SessionElement对象或属性、文本 | 重写了此方法,需回调父类方法 |
s_eles(locator=None) | 找所有符合条件的元素以SessionElement形式返回,d模式处理复杂页面时效率很高 locator: 元素的定位信息,可以是loc元组,或查询字符串 return: SessionElement对象或属性、文本组成的列表 | 重写了此方法,需回调父类方法 |
change_mode(mode=None, go=True, copy_cookies=True) | 切换模式,接收's'或'd',除此以外的字符串会切换为d模式 如copy_cookies为True,切换时会把当前模式的cookies复制到目标模式 切换后,如果go是True,调用相应的get函数使访问的页面同步 mode: 模式字符串 go: 是否跳转到原模式的url copy_cookies: 是否复制cookies到目标模式 return: None | |
cookies_to_session(copy_user_agent=True) | 把浏览器的cookies复制到session对象 copy_user_agent: 是否复制ua信息 return: None | |
cookies_to_browser() | 把session对象的cookies复制到浏览器 | |
cookies(as_dict=False,all_domains=False,all_info=False) | 返回cookies as_dict: 为True时以dict格式返回,为False时返回list且all_info无效 all_domains: 是否返回所有域的cookies all_info: 是否返回所有信息,False则只返回name、value、domain return: cookies信息 | |
close() | 关闭当前标签页 | |
本类定义的属性 | ||
set | ||
url | 返回session中的url | |
_browser_url | 返回浏览器中的url | |
title | ||
raw_data | ||
html | ||
json | ||
response | ||
mode | ||
user_agent | ||
session | ||
_session_url | ||
timeout |