DrissionPage模块(二)

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信息


ele(locator,index=1,timeout=None)

返回第一个符合条件的元素对象

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信息的类

Timeout(object)类

属性和方法

功能

说明

本类定义的方法

__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信息的类

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对象


ele(locator,index=1,timeout=None)

返回第一个符合条件的元素、属性或节点文本

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对象

重写了此方法,需回调父类方法


ele(locator,

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

ChromiumTab(ChromiumBase)类

2.6.2

WebPageTab(SessionPage, ChromiumTab, BasePage)类

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: 元素对象或属性、文本节点文本


ele(locator,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)

把浏览器的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

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python编程爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值