mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
修复get_src()某情况下timeout失效问题;new_tab()现在返回新标签页id
This commit is contained in:
parent
f9afa9f677
commit
db6c03a062
@ -406,12 +406,7 @@ class ChromiumElement(DrissionElement):
|
|||||||
:param timeout: 等待资源加载的超时时间
|
:param timeout: 等待资源加载的超时时间
|
||||||
:return: 资源内容
|
:return: 资源内容
|
||||||
"""
|
"""
|
||||||
src = self.prop('currentSrc')
|
|
||||||
if not src:
|
|
||||||
return None
|
|
||||||
|
|
||||||
timeout = self.page.timeout if timeout is None else timeout
|
timeout = self.page.timeout if timeout is None else timeout
|
||||||
|
|
||||||
if self.tag == 'img': # 等待图片加载完成
|
if self.tag == 'img': # 等待图片加载完成
|
||||||
js = ('return this.complete && typeof this.naturalWidth != "undefined" '
|
js = ('return this.complete && typeof this.naturalWidth != "undefined" '
|
||||||
'&& this.naturalWidth > 0 && typeof this.naturalHeight != "undefined" '
|
'&& this.naturalWidth > 0 && typeof this.naturalHeight != "undefined" '
|
||||||
@ -420,19 +415,22 @@ class ChromiumElement(DrissionElement):
|
|||||||
while not self.run_js(js) and perf_counter() < end_time:
|
while not self.run_js(js) and perf_counter() < end_time:
|
||||||
sleep(.1)
|
sleep(.1)
|
||||||
|
|
||||||
node = self.page.run_cdp('DOM.describeNode', backendNodeId=self._backend_id)['node']
|
|
||||||
frame = node.get('frameId', None)
|
|
||||||
frame = frame or self.page.tab_id
|
|
||||||
|
|
||||||
result = None
|
result = None
|
||||||
end_time = perf_counter() + timeout
|
end_time = perf_counter() + timeout
|
||||||
while perf_counter() < end_time:
|
while perf_counter() < end_time:
|
||||||
|
src = self.prop('currentSrc')
|
||||||
|
if not src:
|
||||||
|
continue
|
||||||
|
|
||||||
|
node = self.page.run_cdp('DOM.describeNode', backendNodeId=self._backend_id)['node']
|
||||||
|
frame = node.get('frameId', None)
|
||||||
|
frame = frame or self.page.tab_id
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = self.page.run_cdp('Page.getResourceContent', frameId=frame, url=src)
|
result = self.page.run_cdp('Page.getResourceContent', frameId=frame, url=src)
|
||||||
break
|
break
|
||||||
except CallMethodError:
|
except CallMethodError:
|
||||||
pass
|
sleep(.1)
|
||||||
sleep(.1)
|
|
||||||
|
|
||||||
if not result:
|
if not result:
|
||||||
return None
|
return None
|
||||||
|
@ -193,12 +193,12 @@ class ChromiumPage(ChromiumBase):
|
|||||||
"""新建一个标签页,该标签页在最后面
|
"""新建一个标签页,该标签页在最后面
|
||||||
:param url: 新标签页跳转到的网址
|
:param url: 新标签页跳转到的网址
|
||||||
:param switch_to: 新建标签页后是否把焦点移过去
|
:param switch_to: 新建标签页后是否把焦点移过去
|
||||||
:return: None
|
:return: 新标签页的id
|
||||||
"""
|
"""
|
||||||
if switch_to:
|
if switch_to:
|
||||||
begin_tabs = set(self.tabs)
|
begin_tabs = set(self.tabs)
|
||||||
len_tabs = len(begin_tabs)
|
len_tabs = len(begin_tabs)
|
||||||
self.run_cdp('Target.createTarget', url='')
|
tid = self.run_cdp('Target.createTarget', url='')['targetId']
|
||||||
|
|
||||||
tabs = self.tabs
|
tabs = self.tabs
|
||||||
while len(tabs) == len_tabs:
|
while len(tabs) == len_tabs:
|
||||||
@ -211,10 +211,12 @@ class ChromiumPage(ChromiumBase):
|
|||||||
self.get(url)
|
self.get(url)
|
||||||
|
|
||||||
elif url:
|
elif url:
|
||||||
self.run_cdp('Target.createTarget', url=url)
|
tid = self.run_cdp('Target.createTarget', url=url)['targetId']
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.run_cdp('Target.createTarget', url='')
|
tid = self.run_cdp('Target.createTarget', url='')['targetId']
|
||||||
|
|
||||||
|
return tid
|
||||||
|
|
||||||
def to_main_tab(self):
|
def to_main_tab(self):
|
||||||
"""跳转到主标签页"""
|
"""跳转到主标签页"""
|
||||||
|
@ -81,7 +81,7 @@ class ChromiumPage(ChromiumBase):
|
|||||||
|
|
||||||
def get_tab(self, tab_id: str = None) -> ChromiumTab: ...
|
def get_tab(self, tab_id: str = None) -> ChromiumTab: ...
|
||||||
|
|
||||||
def new_tab(self, url: str = None, switch_to: bool = True) -> None: ...
|
def new_tab(self, url: str = None, switch_to: bool = True) -> str: ...
|
||||||
|
|
||||||
def to_main_tab(self) -> None: ...
|
def to_main_tab(self) -> None: ...
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user