18 from collections
import namedtuple
20 from robot.utils
import plural_or_not, seq2str
27 js_marker =
'JAVASCRIPT'
28 arg_marker =
'ARGUMENTS'
70 self.
_js_logger_js_logger(
'Executing JavaScript', js_code, js_args)
71 return self.
driverdriverdriver.execute_script(js_code, *js_args)
100 self.
_js_logger_js_logger(
'Executing Asynchronous JavaScript', js_code, js_args)
101 return self.
driverdriverdriver.execute_async_script(js_code, *js_args)
104 message =
'%s:\n%s\n' % (base, code)
106 message = (
'%sBy using argument%s:\n%s'
107 % (message, plural_or_not(args), seq2str(args)))
109 message =
'%sWithout any arguments.' % message
110 self.
infoinfo(message)
115 raise ValueError(
'JavaScript code was not found from code argument.')
116 js_code =
''.join(js_code)
117 path = js_code.replace(
'/', os.sep)
118 if os.path.isfile(path):
120 return js_code, js_args
127 return code[index.js + 1:], []
129 return code[0:index.arg], code[index.arg + 1:]
132 return code[index.js + 1:index.arg], code[index.arg + 1:]
134 return code[index.js + 1:], code[index.arg + 1:index.js]
138 raise ValueError(
'There must be at least one argument defined.')
140 template =
'%s marker was found two times in the code.'
141 if code.count(self.
js_markerjs_marker) > 1:
142 message = template % self.
js_markerjs_marker
144 message = template % self.
arg_markerarg_marker
146 if index.js > 0
and index.arg != 0:
147 message = template % self.
js_markerjs_marker
149 raise ValueError(message)
152 Index = namedtuple(
'Index',
'js arg')
161 return Index(js=js, arg=arg)
164 self.
infoinfo(
'Reading JavaScript from file <a href="file://%s">%s</a>.'
165 % (path.replace(os.sep,
'/'), path), html=
True)
166 with open(path)
as file:
167 return file.read().strip()
def info(self, msg, html=False)
def execute_async_javascript(self, *code)
Executes asynchronous JavaScript code with possible arguments.
def _get_javascript_to_execute(self, code)
def _js_logger(self, base, code, args)
def _separate_code_and_args(self, code)
def _check_marker_error(self, code)
def _read_javascript_from_file(self, path)
def execute_javascript(self, *code)
Executes the given JavaScript code with possible arguments.
def _get_marker_index(self, code)