Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(555)

Side by Side Diff: tools/chrome_remote_control/chrome_remote_control/javascript_runner_interaction.py

Issue 11369075: Chrome remote control multipage tests: Add interactions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: refactoring; add click_element.py, and js runner superclass for interactions. Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 import json
5 import os
6
7 from chrome_remote_control import page_interaction
8
9 class JavaScriptRunnerInteraction(page_interaction.PageInteraction):
nduca 2012/11/07 04:13:49 Once you do the chagnes below, you should be able
marja 2012/11/07 10:52:27 (This file has been removed. I can add the helpers
10 def __init__(self, js_filename, function_to_call, data):
11 super(JavaScriptRunnerInteraction, self).__init__()
12 self._js_filename = js_filename
13 self._function_to_call = function_to_call
14 self._data = data
15
16 def SupportedForPage(self, page, tab):
17 return True
18
19 def PerformInteraction(self, page, tab, test):
nduca 2012/11/07 04:13:49 Would ratehr this not be implemented.
marja 2012/11/07 10:52:27 (This file has been removed.)
20 self.InjectCode(tab)
21 test.WillPerformInteraction(self, page, tab)
22 self.MakeJSCall(tab)
23 self.WaitForCompletion(tab)
24 test.DidPerformInteraction(self, page, tab)
25
26 def CleanUp(self, page, tab):
27 pass
28
29 def InjectCode(self, tab):
nduca 2012/11/07 04:13:49 How about making this be InjectFileIfNeeded(self,
marja 2012/11/07 10:52:27 (This file has been removed.)
30 js_path = os.path.join(os.path.dirname(__file__), self._js_filename)
31 js_file = open(js_path, 'r').read()
32 tab.runtime.Execute(js_file)
33
34 def MakeJSCall(self, tab):
nduca 2012/11/07 04:13:49 I dont think this helper is needed. We should make
marja 2012/11/07 10:52:27 (This file has been removed.)
35 code = ('window.__' + self._function_to_call + '(' +
36 json.dumps(self._data) + ');')
37 result = tab.runtime.Evaluate(code)
38 if not result:
39 raise page_interaction.PageInteractionFailed()
40
41 # For simple waiting conditions, subclasses can just override this
nduca 2012/11/07 04:13:49 I'd rather the place that makes the call just does
marja 2012/11/07 10:52:27 (This file has been removed.)
42 # function. For more complex waiting conditions, they need to override
43 # PerformInteraction.
44 def WaitForCompletion(self, tab):
45 pass
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698