DrissionPage模块(四)

4. _elememts目录

4.1 chromium_element.py

Chromium_element.py定义的类和函数:

序号

名称

说明

1

ChromiumElement(DrissionElement)

控制浏览器元素的对象

2

ShadowRoot(BaseElement)

用于处理ShadowRoot的类,方法和ChromiumElement基本一致

3

find_in_chromium_ele(ele,locator,index=1,timeout=None,relative=True)

在chromium元素中查找

4

find_by_xpath(ele, xpath, index, timeout, relative=True)

执行用xpath在元素中查找元素

5

find_by_css(ele, selector, index, timeout)

执行用css selector在元素中查找元素

6

make_chromium_eles(page, _ids, index=1, is_obj_id=True, ele_only=False)

根据node id或object id生成相应元素对象

7

_get_node_info(page, id_type, _id)

8

_get_node_by_obj_id(page, obj_id, ele_only)

根据obj id返回元素对象或文本,ele_only时如果是文本返回None,出错返回False

9

_get_node_by_node_id(page, node_id, ele_only)

根据node id返回元素对象或文本,ele_only时如果是文本返回None,出错返回False

10

_make_ele(page, obj_id, node)

11

make_js_for_find_ele_by_xpath(xpath, type_txt, node_txt)

生成用xpath在元素中查找元素的js文本

12

run_js(page_or_ele, script, as_expr, timeout, args=None)

运行javascript代码

13

parse_js_result(page, ele, result, end_time)

解析js返回的结果

14

convert_argument(arg)

把参数转换成js能够接收的形式

15

Pseudo(object)

4.1.1  ChromiumElement类

ChromiumElement(DrissionElement)

属性和方法

功能

说明

本类定义的方法

__init__(self,

owner,

node_id=None,

obj_id=None,

backend_id=None)

node_id、obj_id和backend_id必须至少传入一个

owner: 元素所在页面对象

node_id: cdp中的node id

obj_id: js中的object id

backend_id: backend id

实例创建后初始化实例属性

__repr__(self)

对象的自我描述信息

__call__(self, locator, index=1, timeout=None)

在内部查找元素

Locator:元素的定位信息,可以是loc元组,或查询字符串

timeout: 超时时间(秒)

return: ChromiumElement对象或属性、文本

调用实例时自动调用该方法

__eq__(self, other)

当实例与其他对象进行==时自动调用该方法。

__getattr__(self, item)

获取元素属性

item: 属性名

return: 属性值

在访问对象的属性时自动进行自定义行为的特殊方法

@property

tag()

返回元素tag

@property

html()

返回元素outerHTML文本

self.owner.run_cdp('DOM.getOuterHTML', backendNodeId=self._backend_id)['outerHTML']

@property

inner_html()

返回元素innerHTML文本

self.run_js('return this.innerHTML;')

@property

attrs()

返回元素所有attribute属性

self.owner.run_cdp('DOM.getAttributes', nodeId=self._node_id)['attributes']

@property

text()

返回元素内所有文本,文本已格式化

get_ele_txt(make_session_ele(self.html))

@property

raw_text()

返回未格式化处理的元素内文本

self.property('innerText')

@property

def set(self)

返回用于设置元素属性的对象

@property

def states(self)

返回用于获取元素状态的对象

@property

def pseudo(self)

返回用于获取伪元素内容的对象

@property

    def rect(self)

返回用于获取元素位置的对象

@property

def shadow_root(self)

返回当前元素的shadow_root元素对象

self.owner.run_cdp('DOM.describeNode', backendNodeId=self._backend_id)['node']

@property

def sr(self)

返回当前元素的shadow_root元素对象

self.shadow_root

@property

def scroll(self)

返回用于点击的对象

self._clicker

@property

def wait(self)

返回用于等待的对象

self._wait

@property

def select(self)

返回专门处理下拉列表的Select类,非下拉列表元素返回False

self._select

SelectElement(self)

@property

def value(self)

return self.property('value')

@property

def location(self)

返回元素左上角的绝对坐标(x, y)

@property

def size()

返回元素宽和高组成的元组(width, height)

def prop(prop)

self.property(prop)

get_src(timeout=None,

base64_to_bytes=True)

self.src(timeout=timeout, base64_to_bytes=base64_to_bytes)

check(uncheck=False, by_js=False)

选中或取消选中当前元素

        :param uncheck: 是否取消选中

        :param by_js: 是否用js执行

        :return: None

调用JS语句

parent(level_or_loc=1, index=1)

返回上面某一级父元素,可指定层数或用查询语法定位

level_or_loc:第几级父元素,1开始,或定位符

Index:当level_or_loc传入定位符,使用此参数选择第几个结果,1开始

Return:上级元素对象

调用父类方法

child(locator='',

index=1,

timeout=None,

ele_only=True)

返回当前元素的一个符合条件的直接子元素,可用查询语法筛选,可指定返回筛选结果的第几个

locator: 用于筛选的查询语法

index: 第几个查询结果,1开始

timeout: 查找节点的超时时间(秒)

ele_only: 是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本

调用父类方法

prev(locator='',

index=1,

timeout=None,

ele_only=True)

返回当前元素前面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个

locator:用于筛选的查询语法

Index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:兄弟元素或节点文本

调用父类方法

next(locator='',

index=1,

timeout=None,

ele_only=True)

返回当前元素后面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个

Locator:用于筛选的查询语法

index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:兄弟元素或节点文本

调用父类方法

before(locator='',

index=1,

timeout=None,

ele_only=True)

返回文档中当前元素前面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个,查找范围不限同级元素,而是整个DOM文档

locator:用于筛选的查询语法

Index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:本元素前面的某个元素或节点

调用父类方法

after(locator='',

index=1,

timeout=None,

ele_only=True)

返回文档中当前元素后面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个,查找范围不限同级元素,而是整个DOM文档

locator:用于筛选的查询语法

Index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:本元素前面的某个元素或节点

调用父类方法

children(locator='',

timeout=None,

ele_only=True)

返回当前元素符合条件的直接子元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

prevs(locator='',

timeout=None,

ele_only=True)

返回当前元素前面符合条件的同级元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

nexts(locator='',

timeout=None,

ele_only=True)

返回当前元素后面符合条件的同级元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

befores(locator='',

timeout=None,

ele_only=True)

返回文档中当前元素前面符合条件的元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

afters(locator='',

timeout=None,

ele_only=True)

返回文档中当前元素后面符合条件的元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

attr(attr)

返回一个attribute属性值

attr: 属性名

return: 属性值文本,没有该属性返回None

remove_attr(name)

删除元素一个attribute属性

name: 属性名

return: None

self.run_js(f'this.removeAttribute("{name}");')

property(name)

获取一个property属性值

name: 属性名

return: 属性值文本

self.run_js(f'return this.{name};')

run_js(script,

*args,

as_expr=False,

timeout=None)

对本元素执行javascript代码

script:js文本,文本中用this表示本元素

args:参数,按顺序在js文本中对应arguments[0]\arguments[1]...

as_expr:是否作为表达式运行,为True时args无效

timeout:js超时时间,为None则使用页面timeouts.script设置

Return:运行的结果

run_js(self, script, as_expr, self.owner.timeouts.script if timeout is None else timeout, args)

run_async_js(script,

*args,

 as_expr=False)

以异步方式对本元素执行javascript代码

script:js文本,文本中用this表示本元素

args:参数,按顺序在js文本中对应arguments[0]\arguments[1]...

as_expr:是否作为表达式运行,为True时args无效

return: None

run_js(self, script, as_expr, 0, args)

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

返回当前元素下级符合条件的一个元素、属性或节点文本

locator:元素的定位信息,可以是loc元组,或查询字符串

index:获取第几个元素,从1开始,可传入负数获取倒数第几个

timeout:查找元素超时时间,默认与元素所在页面等待时间一致

return:ChromiumElement对象或属性\文本

调用本实例的_ele()方法

eles(locator, timeout=None)

返回当前元素下级所有符合条件的元素、属性或节点文本

locator:元素的定位信息,可以是loc元组,或查询字符串

timeout:查找元素超时时间,默认与元素所在页面等待时间一致

return:ChromiumElement对象或属性\文本

调用本实例的_ele()方法

s_ele( locator=None, index=1)

查找一个符合条件的元素,以SessionElement形式返回

locator:元素的定位信息,可以是loc元组,或查询字符串

index:获取第几个,从1开始,可传入负数获取倒数第几个

return:SessionElement对象或属性\文本

s_eles( locator=None)

查找所有符合条件的元素,以SessionElement形式返回

locator:元素的定位信息,可以是loc元组,或查询字符串

return:SessionElement对象或属性\文本

_find_elements(locator,

timeout=None,

index=1,

relative=False,

raise_err=None)

返回当前元素下级符合条件的子元素\属性或节点文本,默认返回第一个

Locator:元素的定位信息,可以是loc元组,或查询字符串

timeout:查找元素超时时间(秒)

index:第几个结果,从1开始,可传入负数获取倒数第几个,为None返回所有

relative:WebPage用的表示是否相对定位的参数

raise_err:找不到元素是是否抛出异常,为None时根据全局设置

return:ChromiumElement对象或文本\属性或其组成的列表

style(style, pseudo_ele='')

返回元素样式属性值,可获取伪元素属性值

style:样式属性名称

pseudo_ele:伪元素名称(如有)

return:样式属性的值

执行js语句

src(timeout=None,

base64_to_bytes=True)

返回元素src资源,base64的可转为bytes返回,其它返回str

timeout:等待资源加载的超时时间(秒)

base64_to_bytes:为True时,如果是base64数据,转换为bytes格式

return:资源内容

save(path=None, name=None, timeout=None, rename=True)

保存图片或其它有src属性的元素的资源

path: 文件保存路径,为None时保存到当前文件夹

name: 文件名称,为None时从资源url获取

timeout: 等待资源加载的超时时间(秒)

rename: 遇到重名文件时是否自动重命名

return: 返回保存路径

get_screenshot(path=None,

name=None,

as_bytes=None,

as_base64=None,

scroll_to_center=True)

对当前元素截图,可保存到文件,或以字节方式返回

path: 文件保存路径

name: 完整文件名,后缀可选 'jpg','jpeg','png','webp'

as_bytes: 是否以字节形式返回图片,可选'jpg','jpeg','png','webp',生效时path参数和as_base64参数无效

as_base64: 是否以base64字符串形式返回图片,可选 'jpg','jpeg','png','webp',生效时path参数无效

scroll_to_center: 截图前是否滚动到视口中央

return: 图片完整路径或字节文本

input( vals, clear=False, by_js=False)

输入文本或组合键,也可用于输入文件路径到input元素(路径间用\n间隔)

vals: 文本值或按键组合

clear: 输入前是否清空文本框

by_js: 是否用js方式输入,不能输入组合键

return: None

clear(by_js=False)

清空元素文本

by_js: 是否用js方式清空,为False则用全选+del模拟输入删除

return: None

_input_focus()

输入前使元素获取焦点

focus()

使元素获取焦点

hover(offset_x=None, offset_y=None)

鼠标悬停,可接受偏移量,偏移量相对于元素左上角坐标.不传入x或y值时悬停在元素中点

offset_x: 相对元素左上角坐标的x轴偏移量

offset_y: 相对元素左上角坐标的y轴偏移量

return: None

drag(offset_x=0, offset_y=0,

duration=.5)

拖拽当前元素到相对位置

offset_x: x变化值

offset_y: y变化值

duration: 拖动用时,传入0即瞬间到达

return: None

drag_to(ele_or_loc, duration=.5)

拖拽当前元素,目标为另一个元素或坐标元组(x, y)

ele_or_loc: 另一个元素或坐标元组,坐标为元素中点的坐标

duration: 拖动用时,传入0即瞬间到达

return: None

_get_obj_id(node_id=None,

backend_id=None)

根据传入node id或backend id获取js中的object id

        :param node_id: cdp中的node id

        :param backend_id: backend id

        :return: js中的object id

_get_node_id( obj_id=None,

backend_id=None)

根据传入object id或backend id获取cdp中的node id

        :param obj_id: js中的object id

        :param backend_id: backend id

        :return: cdp中的node id

_get_backend_id(node_id)

根据传入node id获取backend id

        :param node_id:

        :return: backend id

_refresh_id()

根据backend id刷新其它id

_get_ele_path(mode)

返获取绝对的css路径或xpath路径

mode:css/xpath

_set_file_input( files)

对上传控件写入路径

files: 文件路径表或字符串,字符串时多个文件用回车分隔

retu列rn: None

4.1.2 ShadowRoot类

ShadowRoot(BaseElement)

属性和方法

功能

说明

本类定义的方法

__init__(self,

parent_ele,

obj_id=None,

 backend_id=None)

parent_ele: shadow root 所在父元素

obj_id: js中的object id

backend_id: cdp中的backend id

__repr__(self)

f'<ShadowRoot in {self.parent_ele}>'

__call__(self,

locator,

index=1,

timeout=None)

在内部查找元素

例:ele2 = ele1('@id=ele_id')

locator: 元素的定位信息,可以是loc元组,或查询字符串

index: 获取第几个,从1开始,可传入负数获取倒数第几个

timeout: 超时时间(秒)

return: 元素对象或属性、文本

@property

def tag(self)

返回元素标签名

@property

def html(self)

返回outerHTML文本

@property

def inner_html(self)

@property

def states(self)

run_js(self, script, *args, as_expr=False, timeout=None)

run_async_js(self, script, *args, as_expr=False, timeout=None)

parent(self, level_or_loc=1, index=1)

child(self, locator='', index=1)

next(self, locator='', index=1)

before(self, locator='', index=1)

after(self, locator='', index=1)

children(self, locator='')

nexts(self, locator='')

befores(self, locator='')

afters(self, locator='')

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

eles(self, locator, timeout=None)

s_ele(self, locator=None, index=1)

s_eles(self, locator)

_find_elements(self, locator, timeout=None, index=1, relative=False, raise_err=None)

_get_node_id(self, obj_id)

_get_obj_id(self, back_id)

_get_backend_id(self, node_id)

​​​​​​​4.1.3 Pseudo类

Pseudo(object)

属性和方法

功能

说明

本类定义的方法

__init__(self, ele)

ele: ChromiumElement

@property

def before(self)

返回当前元素的::before伪元素内容

@property

def after(self)

返回当前元素的::after伪元素内容

​​​​​​​4.1.4 函数

函数

功能

find_in_chromium_ele(ele,

locator,

index=1,

timeout=None,

relative=True)

在chromium元素中查找

ele: ChromiumElement对象

locator: 元素定位元组

index: 第几个结果,从1开始,可传入负数获取倒数第几个,为None返回所有

timeout: 查找元素超时时间(秒)

relative: WebPage用于标记是否相对定位使用

return: 返回ChromiumElement元素或它们组成的列表

find_by_xpath(ele,

 xpath,

 index,

timeout,

relative=True)

执行用xpath在元素中查找元素

ele: 在此元素中查找

xpath: 查找语句

index: 第几个结果,从1开始,可传入负数获取倒数第几个,为None返回所有

timeout: 超时时间(秒)

relative: 是否相对定位

return: ChromiumElement或其组成的列表

find_by_css(ele, selector, index, timeout)

执行用css selector在元素中查找元素

ele: 在此元素中查找

selector: 查找语句

index: 第几个结果,从1开始,可传入负数获取倒数第几个,为None返回所有

timeout: 超时时间(秒)

return: ChromiumElement或其组成的列表

make_chromium_eles(page, _ids, index=1, is_obj_id=True, ele_only=False)

根据node id或object id生成相应元素对象

page: ChromiumPage对象

 _ids: 元素的id列表

index: 获取第几个,为None返回全部

is_obj_id: 传入的id是obj id还是node id

ele_only: 是否只返回ele,在页面查找元素时生效

return: 浏览器元素对象或它们组成的列表,生成失败返回False

_get_node_info(page, id_type, _id)

_get_node_by_obj_id(page, obj_id, ele_only)

根据obj id返回元素对象或文本,ele_only时如果是文本返回None,出错返回False

_get_node_by_node_id(page, node_id, ele_only)

根据node id返回元素对象或文本,ele_only时如果是文本返回None,出错返回False

_make_ele(page, obj_id, node)

make_js_for_find_ele_by_xpath(xpath, type_txt, node_txt)

生成用xpath在元素中查找元素的js文本

xpath: xpath文本

type_txt: 查找类型

node_txt: 节点类型

return: js文本

run_js(page_or_ele, script, as_expr, timeout, args=None)

运行javascript代码

    :param page_or_ele: 页面对象或元素对象

    :param script: js文本

    :param as_expr: 是否作为表达式运行,为True时args无效

    :param timeout: 超时时间(秒)

    :param args: 参数,按顺序在js文本中对应arguments[0]、arguments[1]...

    :return: js执行结果

parse_js_result(page, ele, result, end_time)

解析js返回的结果

convert_argument(arg)

把参数转换成js能够接收的形式

​​​​​​​4.2 session_element.py

Session_element.py定义了的类和函数:

序号

名称

说明

1

SessionElement(DrissionElement)

session模式的元素对象,包装了一个lxml的Element对象,并封装了常用功能

2

make_session_ele(html_or_ele, loc=None, index=1)

从接收到的对象或html文本中查找元素,返回SessionElement对象

如要直接从html生成SessionElement而不在下级查找,loc输入None即可

​​​​​​​4.2.1 SessionElement类

SessionElement(DrissionElement)

属性和方法

功能

说明

本类定义的方法

__init__(self, ele, owner=None)

初始化对象

ele: 被包装的HtmlElement元素

owner: 元素所在页面对象,如果是从 html 文本生成的元素,则为 None

@property

def inner_ele(self)

__repr__(self)

__call__(self, locator, index=1, timeout=None)

在内部查找元素

例:ele2 = ele1('@id=ele_id')

locator: 元素的定位信息,可以是loc元组,或查询字符串

index: 第几个元素,从1开始,可传入负数获取倒数第几个

timeout: 不起实际作用

return: SessionElement对象或属性、文本

__eq__(self, other)

__getattr__(self, item)

获取元素属性

item: 属性名

return: 属性值

@property

def tag(self)

返回tag对象

@property

def html(self)

返回outerHTML文本

@property

def inner_html(self)

返回元素innerHTML文本

@property

def attrs(self)

返回元素所有属性及值

@property

def text(self)

返回元素内所有文本

@property

def raw_text(self)

返回未格式化处理的元素内文本

parent(level_or_loc=1, index=1)

返回上面某一级父元素,可指定层数或用查询语法定位

level_or_loc:第几级父元素,1开始,或定位符

Index:当level_or_loc传入定位符,使用此参数选择第几个结果,1开始

Return:上级元素对象

调用父类方法

child(locator='',

index=1,

timeout=None,

ele_only=True)

返回当前元素的一个符合条件的直接子元素,可用查询语法筛选,可指定返回筛选结果的第几个

locator: 用于筛选的查询语法

index: 第几个查询结果,1开始

timeout: 查找节点的超时时间(秒)

ele_only: 是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本

调用父类方法

prev(locator='',

index=1,

timeout=None,

ele_only=True)

返回当前元素前面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个

locator:用于筛选的查询语法

Index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:兄弟元素或节点文本

调用父类方法

next(locator='',

index=1,

timeout=None,

ele_only=True)

返回当前元素后面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个

Locator:用于筛选的查询语法

index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:兄弟元素或节点文本

调用父类方法

before(locator='',

index=1,

timeout=None,

ele_only=True)

返回文档中当前元素前面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个,查找范围不限同级元素,而是整个DOM文档

locator:用于筛选的查询语法

Index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:本元素前面的某个元素或节点

调用父类方法

after(locator='',

index=1,

timeout=None,

ele_only=True)

返回文档中当前元素后面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个,查找范围不限同级元素,而是整个DOM文档

locator:用于筛选的查询语法

Index:前面第几个查询结果,1开始

timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return:本元素前面的某个元素或节点

调用父类方法

children(locator='',

timeout=None,

ele_only=True)

返回当前元素符合条件的直接子元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

prevs(locator='',

timeout=None,

ele_only=True)

返回当前元素前面符合条件的同级元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

nexts(locator='',

timeout=None,

ele_only=True)

返回当前元素后面符合条件的同级元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

befores(locator='',

timeout=None,

ele_only=True)

返回文档中当前元素前面符合条件的元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

afters(locator='',

timeout=None,

ele_only=True)

返回文档中当前元素后面符合条件的元素或节点组成的列表,可用查询语法筛选

Locator:用于筛选的查询语法

Timeout:查找节点的超时时间(秒)

ele_only:是否只获取元素,为False时把文本\注释节点也纳入

return: 直接子元素或节点文本组成的列表

调用父类方法

attr(attr)

返回一个attribute属性值

attr: 属性名

return: 属性值文本,没有该属性返回None

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

返回当前元素下级符合条件的一个元素、属性或节点文本

locator:元素的定位信息,可以是loc元组,或查询字符串

index:获取第几个元素,从1开始,可传入负数获取倒数第几个

timeout:查找元素超时时间,默认与元素所在页面等待时间一致

return:ChromiumElement对象或属性\文本

调用本实例的_ele()方法

eles(locator, timeout=None)

返回当前元素下级所有符合条件的元素、属性或节点文本

locator:元素的定位信息,可以是loc元组,或查询字符串

timeout:查找元素超时时间,默认与元素所在页面等待时间一致

return:ChromiumElement对象或属性\文本

调用本实例的_ele()方法

s_ele( locator=None, index=1)

查找一个符合条件的元素,以SessionElement形式返回

locator:元素的定位信息,可以是loc元组,或查询字符串

index:获取第几个,从1开始,可传入负数获取倒数第几个

return:SessionElement对象或属性\文本

s_eles( locator=None)

查找所有符合条件的元素,以SessionElement形式返回

locator:元素的定位信息,可以是loc元组,或查询字符串

return:SessionElement对象或属性\文本

_find_elements(locator,

timeout=None,

index=1,

relative=False,

raise_err=None)

返回当前元素下级符合条件的子元素\属性或节点文本,默认返回第一个

Locator:元素的定位信息,可以是loc元组,或查询字符串

timeout:查找元素超时时间(秒)

index:第几个结果,从1开始,可传入负数获取倒数第几个,为None返回所有

relative:WebPage用的表示是否相对定位的参数

raise_err:找不到元素是是否抛出异常,为None时根据全局设置

return:SessionElement对象或文本\属性或其组成的列表

_get_ele_path(mode)

获取css路径或xpath路径

mode: 'css' 或 'xpath'

return: css路径或xpath路径

​​​​​​​4.2.2 函数

序号

名称

说明

1

make_session_ele(html_or_ele, loc=None, index=1)

从接收到的对象或html文本中查找元素,返回SessionElement对象

如要直接从html生成SessionElement而不在下级查找,loc输入None即可

html_or_ele:html文本\BaseParser对象

loc:定位元组或字符串,为None时不在下级查找,返回根元素

index:获取第几个元素,从1开始,可传入负数获取倒数第几个,None获取所有

return:返回SessionElement元素或列表,或属性文本

​​​​​​​4.3 none_element.py

none_element.py定义的类和方法:

序号

名称

说明

1

NoneElement(object)

4.3.1 NoneElement类

NoneElement(object)

属性和方法

功能

说明

本类定义的方法

__init__( page=None, method=None, args=None)

__call__(*args,**kwargs)

__getattr__(item)

__eq__(other)

__bool__()

__repr__()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

python编程爱好者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值