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类
属性和方法 | 功能 | 说明 |
本类定义的方法 | ||
__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__() |