MCPcopy Index your code
hub / github.com/seleniumbase/SeleniumBase / evaluate

Method evaluate

seleniumbase/fixtures/base_case.py:3464–3502  ·  view source on GitHub ↗

Run a JavaScript expression and return the result.

(self, expression)

Source from the content-addressed store, hash-verified

3462 self.open("file://" + file_path)
3463
3464 def evaluate(self, expression):
3465 """Run a JavaScript expression and return the result."""
3466 self.__check_scope()
3467 if self.__is_cdp_swap_needed():
3468 return self.cdp.evaluate(expression)
3469 self._check_browser()
3470 original_expression = expression
3471 expression = expression.strip()
3472 exp_list = expression.split("\n")
3473 if exp_list and exp_list[-1].strip().startswith("return "):
3474 expression = (
3475 "\n".join(exp_list[0:-1]) + "\n"
3476 + exp_list[-1].strip()[len("return "):]
3477 ).strip()
3478 evaluation = self.driver.execute_cdp_cmd(
3479 "Runtime.evaluate",
3480 {
3481 "expression": expression
3482 },
3483 )
3484 if "value" in evaluation["result"]:
3485 return evaluation["result"]["value"]
3486 elif evaluation["result"]["type"] == "undefined":
3487 return None
3488 elif "exceptionDetails" in evaluation:
3489 raise Exception(evaluation["result"]["description"], expression)
3490 elif evaluation["result"]["type"] == "object":
3491 if "return " not in original_expression:
3492 expression = "return " + original_expression.strip()
3493 # Need to use execute_script() to return a WebDriver object.
3494 # If this causes duplicate evaluation, don't use evaluate().
3495 return self.execute_script(expression)
3496 elif evaluation["result"]["type"] == "function":
3497 return {} # This is what sb.cdp.evaluate returns
3498 elif "description" in evaluation["result"]:
3499 # At this point, the description is the exception
3500 raise Exception(evaluation["result"]["description"], expression)
3501 else: # Possibly an unhandled case if reached
3502 return None
3503
3504 def execute_script(self, script, *args, **kwargs):
3505 self.__check_scope()

Callers 3

execute_scriptMethod · 0.45
is_onlineMethod · 0.45
execute_scriptFunction · 0.45

Calls 5

__check_scopeMethod · 0.95
__is_cdp_swap_neededMethod · 0.95
_check_browserMethod · 0.95
execute_scriptMethod · 0.95
execute_cdp_cmdMethod · 0.80

Tested by

no test coverage detected