修复iframe内元素link参数不正确问题

This commit is contained in:
g1879 2023-12-06 21:43:06 +08:00
parent d7ec617988
commit 5ff303130d
3 changed files with 8 additions and 8 deletions

View File

@ -128,10 +128,10 @@ def offset_scroll(ele, offset_x, offset_y):
return cx, cy
def make_absolute_link(link, page=None):
def make_absolute_link(link, baseURI=None):
"""获取绝对url
:param link: 超链接
:param page: 页面对象
:param baseURI: 页面或iframe的url
:return: 绝对链接
"""
if not link:
@ -142,11 +142,11 @@ def make_absolute_link(link, page=None):
# 是相对路径与页面url拼接并返回
if not parsed['netloc']:
return urljoin(page.url, link) if page else link
return urljoin(baseURI, link) if baseURI else link
# 是绝对路径但缺少协议从页面url获取协议并修复
if not parsed['scheme'] and page:
parsed['scheme'] = urlparse(page.url).scheme
if not parsed['scheme'] and baseURI:
parsed['scheme'] = urlparse(baseURI).scheme
parsed = tuple(v for v in parsed.values())
return urlunparse(parsed)

View File

@ -26,7 +26,7 @@ def location_in_viewport(page: ChromiumBase, loc_x: float, loc_y: float) -> bool
def offset_scroll(ele: ChromiumElement, offset_x: float, offset_y: float) -> tuple: ...
def make_absolute_link(link: str, page: BasePage = None) -> str: ...
def make_absolute_link(link: str, baseURI: str = None) -> str: ...
def is_js_func(func: str) -> bool: ...

View File

@ -324,10 +324,10 @@ class ChromiumElement(DrissionElement):
if not link or link.lower().startswith(('javascript:', 'mailto:')):
return link
else:
return make_absolute_link(link, self.page)
return make_absolute_link(link, self.prop('baseURI'))
elif attr == 'src':
return make_absolute_link(attrs.get('src', None), self.page)
return make_absolute_link(attrs.get('src', None), self.prop('baseURI'))
elif attr == 'text':
return self.text