Skip to content

Commit

Permalink
Merge pull request #67 from ctripcorp/step_increase
Browse files Browse the repository at this point in the history
add step cache and web console
  • Loading branch information
clgwlg authored Jul 20, 2022
2 parents b1c17ed + 25f6c70 commit 1ef4037
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 0 deletions.
52 changes: 52 additions & 0 deletions flybirds/core/plugin/event/step.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from flybirds.core.global_context import GlobalContext
from flybirds.utils import flybirds_log as log
from flybirds.utils import launch_helper
import flybirds.core.global_resource as gr


def step_init(context, step):
Expand Down Expand Up @@ -36,12 +37,61 @@ def run(context, step):
log.info(step)
step_init(context, step)
log.info(f"run step:{step.name}")
# # if there is a hook custom behavior, call the related function
# before_step_extend = launch_helper.get_hook_file("before_step_extend")
# if before_step_extend is not None:
# before_step_extend(context, step)


class OnUserBefore: # pylint: disable=too-few-public-methods
"""
before step
"""

name = "OnUserBefore"
order = 50

@staticmethod
def can(context, step):
return True

@staticmethod
def run(context, step):
"""
exe before step
"""
# if there is a hook custom behavior, call the related function
before_step_extend = launch_helper.get_hook_file("before_step_extend")
if before_step_extend is not None:
before_step_extend(context, step)


class OnWebBefore: # pylint: disable=too-few-public-methods
"""
before step
"""

name = "OnWebBefore"
order = 15

@staticmethod
def can(context, step):
if gr.get_platform() is not None \
and (gr.get_platform().lower() == "web"):
return True
else:
return False

@staticmethod
def run(context, step):
"""
exe before step
"""
if hasattr(GlobalContext, "get_global_cache"):
if GlobalContext.get_global_cache("web_console") is not None:
GlobalContext.set_global_cache("web_console", None)


class OnAfter: # pylint: disable=too-few-public-methods
"""
after step
Expand All @@ -67,4 +117,6 @@ def run(context, step):

# join step event to global processor
var = GlobalContext.join("before_step_processor", OnBefore, 1)
var4 = GlobalContext.join("before_step_processor", OnUserBefore, 1)

var1 = GlobalContext.join("after_step_processor", OnAfter, 1)
13 changes: 13 additions & 0 deletions flybirds/core/plugin/plugins/default/web/page.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def init_page():
page.route("**/*", handle_route)
# request listening events
page.on("request", handle_request)
page.on("console", handle_page_error)

ele_wait_time = gr.get_frame_config_value("wait_ele_timeout", 30)
page_render_timeout = gr.get_frame_config_value("page_render_timeout",
Expand Down Expand Up @@ -109,6 +110,18 @@ def cur_page_equal(self, context, param):
verify_helper.text_equal(target_url, cur_url)


def handle_page_error(msg):
if hasattr(msg, "type") and msg.type is not None:
need_log = False
if msg.type.lower() == "warn":
need_log = True
if msg.type.lower() == "error":
need_log = True
if need_log:
if hasattr(msg, "text"):
log.info(f"=====================page console==================:\n {msg.text}")


def handle_request(request):
# interception request handle
parsed_uri = urlparse(request.url)
Expand Down
6 changes: 6 additions & 0 deletions flybirds/template/pscript/custom_handle/operation.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,9 @@ def get_page_url(param):
"""
pass


def get_global_value(v):
"""
replace with global cache
"""
pass
23 changes: 23 additions & 0 deletions flybirds/utils/dsl_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,31 @@ def wrapper_func(*args, **kwargs):
ele_key = v.split(',')[0]
ele_value = gr.get_ele_locator(ele_key)
v = selector_str.replace(ele_key, ele_value, 1)
new_v = get_global_value(v)
if new_v is not None:
v = new_v
kwargs[k] = v
func(*args, **kwargs)
# Do something after the function.

return wrapper_func


def get_global_value(v):
projectScript = gr.get_value("projectScript")
if projectScript is not None:
if hasattr(projectScript, "custom_operation"):
custom_operation = projectScript.custom_operation
if custom_operation is not None and hasattr(custom_operation,
"get_global_value"):
rp = custom_operation.get_global_value(v)
if rp is not None:
return rp
elif hasattr(projectScript, "app_operation"):
app_operation = projectScript.app_operation
if app_operation is not None and hasattr(app_operation,
"get_global_value"):
rp = app_operation.get_global_value(v)
if rp is not None:
return rp
return None

0 comments on commit 1ef4037

Please sign in to comment.