mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
# -*- coding:utf-8 -*-
|
|
"""
|
|
@Author : g1879
|
|
@Contact : g1879@qq.com
|
|
"""
|
|
from ..errors import ElementNotFoundError
|
|
|
|
|
|
class NoneElement(object):
|
|
def __init__(self, page=None, method=None, args=None):
|
|
if page:
|
|
self._none_ele_value = page._none_ele_value
|
|
self._none_ele_return_value = page._none_ele_return_value
|
|
else:
|
|
self._none_ele_value = None
|
|
self._none_ele_return_value = False
|
|
self.method = method
|
|
self.args = args
|
|
|
|
def __call__(self, *args, **kwargs):
|
|
if not self._none_ele_return_value:
|
|
raise ElementNotFoundError(None, self.method, self.args)
|
|
else:
|
|
return self
|
|
|
|
def __getattr__(self, item):
|
|
if not self._none_ele_return_value:
|
|
raise ElementNotFoundError(None, self.method, self.args)
|
|
elif item in ('ele', 's_ele', 'parent', 'child', 'next', 'prev', 'before',
|
|
'after', 'get_frame', 'shadow_root', 'sr'):
|
|
return self
|
|
else:
|
|
if item in ('size', 'link', 'css_path', 'xpath', 'comments', 'texts', 'tag', 'html', 'inner_html',
|
|
'attrs', 'text', 'raw_text'):
|
|
return self._none_ele_value
|
|
else:
|
|
raise ElementNotFoundError(None, self.method, self.args)
|
|
|
|
def __eq__(self, other):
|
|
if other is None:
|
|
return True
|
|
|
|
def __bool__(self):
|
|
return False
|
|
|
|
def __repr__(self):
|
|
return 'None'
|