OLD | NEW |
| (Empty) |
1 #!/usr/bin/env python | |
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 import os | |
7 import sys | |
8 import unittest | |
9 | |
10 import pyauto_functional | |
11 from pyauto import PyUITest | |
12 | |
13 | |
14 class ExecuteJavascriptTest(PyUITest): | |
15 def _GetExtensionInfoById(self, extensions, id): | |
16 for x in extensions: | |
17 if x['id'] == id: | |
18 return x | |
19 return None | |
20 | |
21 def testExecuteJavascript(self): | |
22 self.NavigateToURL(self.GetFileURLForDataPath( | |
23 'frame_dom_access', 'frame_dom_access.html')) | |
24 | |
25 v = self.ExecuteJavascript('window.domAutomationController.send(' + | |
26 'document.getElementById("myinput").nodeName)') | |
27 self.assertEqual(v, 'INPUT') | |
28 | |
29 def testGetDOMValue(self): | |
30 self.NavigateToURL(self.GetFileURLForDataPath( | |
31 'frame_dom_access', 'frame_dom_access.html')) | |
32 | |
33 v = self.GetDOMValue('document.getElementById("myinput").nodeName') | |
34 self.assertEqual(v, 'INPUT') | |
35 | |
36 def testExecuteJavascriptInExtension(self): | |
37 """Test we can inject JavaScript into an extension.""" | |
38 dir_path = os.path.abspath( | |
39 os.path.join(self.DataDir(), 'extensions', 'js_injection_background')) | |
40 ext_id = self.InstallExtension(dir_path) | |
41 | |
42 # Verify extension is enabled. | |
43 extension = self._GetExtensionInfoById(self.GetExtensionsInfo(), ext_id) | |
44 self.assertTrue(extension['is_enabled'], | |
45 msg='Extension was disabled by default') | |
46 | |
47 # Get the background page's view. | |
48 background_view = self.WaitUntilExtensionViewLoaded( | |
49 view_type='EXTENSION_BACKGROUND_PAGE') | |
50 self.assertTrue(background_view, | |
51 msg='problematic background view: views = %s.' % | |
52 self.GetBrowserInfo()['extension_views']) | |
53 | |
54 # Get values from background page's DOM | |
55 v = self.ExecuteJavascriptInRenderView( | |
56 'window.domAutomationController.send(' | |
57 'document.getElementById("myinput").nodeName)', background_view) | |
58 self.assertEqual(v, 'INPUT', | |
59 msg='Incorrect value returned (v = %s).' % v) | |
60 v = self.ExecuteJavascriptInRenderView( | |
61 'window.domAutomationController.send(bool_var)', background_view) | |
62 self.assertEqual(v, True, msg='Incorrect value returned (v = %s).' % v) | |
63 v = self.ExecuteJavascriptInRenderView( | |
64 'window.domAutomationController.send(int_var)', background_view) | |
65 self.assertEqual(v, 42, msg='Incorrect value returned (v = %s).' % v) | |
66 v = self.ExecuteJavascriptInRenderView( | |
67 'window.domAutomationController.send(str_var)', background_view) | |
68 self.assertEqual(v, 'foo', msg='Incorrect value returned (v = %s).' % v) | |
69 | |
70 | |
71 if __name__ == '__main__': | |
72 pyauto_functional.Main() | |
OLD | NEW |