insure no exception (if failed, return 0) and change 'load' to 'networkidle'
This commit is contained in:
@@ -444,7 +444,7 @@ def get_open_tabs_info(env, config: Dict[str, str]):
|
||||
for page in context.pages:
|
||||
try:
|
||||
# Wait for the page to finish loading, this prevents the "execution context was destroyed" issue
|
||||
page.wait_for_load_state('load') # Wait for the 'load' event to complete
|
||||
page.wait_for_load_state('networkidle') # Wait for the 'load' event to complete
|
||||
title = page.title()
|
||||
url = page.url
|
||||
tabs_info.append({'title': title, 'url': url})
|
||||
@@ -486,12 +486,17 @@ def get_active_url_from_accessTree(env, config):
|
||||
# first, use accessibility API to get the active tab URL
|
||||
at: _Element = lxml.etree.fromstring(accessibility_tree)
|
||||
arch = platform.machine()
|
||||
if "arm" in arch:
|
||||
selector = CSSSelector(", application[name=Chromium] entry[name=Address\\ and\\ search\\ bar]",
|
||||
namespaces=_accessibility_ns_map)
|
||||
else:
|
||||
selector = CSSSelector("application[name=Google\\ Chrome] entry[name=Address\\ and\\ search\\ bar]",
|
||||
namespaces=_accessibility_ns_map)
|
||||
print("Your architecture is: {}".format(arch))
|
||||
try:
|
||||
if "arm" in arch:
|
||||
selector = CSSSelector("application[name=Chromium] entry[name=Address\\ and\\ search\\ bar]",
|
||||
namespaces=_accessibility_ns_map)
|
||||
else:
|
||||
selector = CSSSelector("application[name=Google\\ Chrome] entry[name=Address\\ and\\ search\\ bar]",
|
||||
namespaces=_accessibility_ns_map)
|
||||
except:
|
||||
logger.error("Failed to parse the selector for active tab URL")
|
||||
return None
|
||||
elements: List[_Element] = selector(at)
|
||||
# if "xpath" in config:
|
||||
# elements: List[_Element] = at.xpath(config["xpath"], namespaces=_accessibility_ns_map)
|
||||
@@ -519,6 +524,9 @@ def get_active_tab_info(env, config: Dict[str, str]):
|
||||
}
|
||||
"""
|
||||
active_tab_url = get_active_url_from_accessTree(env, config)
|
||||
if active_tab_url is None:
|
||||
logger.error("Failed to get the url of active tab")
|
||||
return None
|
||||
host = env.vm_ip
|
||||
port = 9222 # fixme: this port is hard-coded, need to be changed from config file
|
||||
|
||||
@@ -533,7 +541,11 @@ def get_active_tab_info(env, config: Dict[str, str]):
|
||||
active_tab_info = {}
|
||||
# go to the target URL page
|
||||
page = browser.new_page()
|
||||
page.goto(active_tab_url)
|
||||
try:
|
||||
page.goto(active_tab_url)
|
||||
except:
|
||||
logger.error("Failed to go to the target URL page")
|
||||
return None
|
||||
page.wait_for_load_state('load') # Wait for the 'load' event to complete
|
||||
active_tab_info = {
|
||||
'title': page.title(),
|
||||
@@ -972,6 +984,8 @@ def get_active_tab_html_parse(env, config: Dict[str, Any]):
|
||||
}
|
||||
"""
|
||||
active_tab_url = get_active_url_from_accessTree(env, config)
|
||||
if not isinstance(active_tab_url, str):
|
||||
return None
|
||||
host = env.vm_ip
|
||||
port = 9222 # fixme: this port is hard-coded, need to be changed from config file
|
||||
|
||||
@@ -1002,9 +1016,11 @@ def get_active_tab_html_parse(env, config: Dict[str, Any]):
|
||||
target_page = None
|
||||
for context in browser.contexts:
|
||||
for page in context.pages:
|
||||
page.wait_for_load_state("load")
|
||||
page.wait_for_load_state("networkidle")
|
||||
if page.url == active_tab_url:
|
||||
target_page = page
|
||||
print("tartget page url: ", target_page.url)
|
||||
print("tartget page title: ", target_page.title())
|
||||
break
|
||||
if target_page is None:
|
||||
return {}
|
||||
|
||||
Reference in New Issue
Block a user