OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """PyAuto: Python Interface to Chromium's Automation Proxy. | 6 """PyAuto: Python Interface to Chromium's Automation Proxy. |
7 | 7 |
8 PyAuto uses swig to expose Automation Proxy interfaces to Python. | 8 PyAuto uses swig to expose Automation Proxy interfaces to Python. |
9 For complete documentation on the functionality available, | 9 For complete documentation on the functionality available, |
10 run pydoc on this file. | 10 run pydoc on this file. |
(...skipping 1039 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 if 'username' in cmd_dict_copy.keys(): | 1050 if 'username' in cmd_dict_copy.keys(): |
1051 cmd_dict_copy['username'] = 'removed_username' | 1051 cmd_dict_copy['username'] = 'removed_username' |
1052 raise JSONInterfaceError('Automation call %s received empty response. ' | 1052 raise JSONInterfaceError('Automation call %s received empty response. ' |
1053 'Additional information:\n%s' % (cmd_dict_copy, | 1053 'Additional information:\n%s' % (cmd_dict_copy, |
1054 additional_info)) | 1054 additional_info)) |
1055 ret_dict = json.loads(result) | 1055 ret_dict = json.loads(result) |
1056 if ret_dict.has_key('error'): | 1056 if ret_dict.has_key('error'): |
1057 raise JSONInterfaceError(ret_dict['error']) | 1057 raise JSONInterfaceError(ret_dict['error']) |
1058 return ret_dict | 1058 return ret_dict |
1059 | 1059 |
| 1060 def NavigateToURL(self, url, windex=0, tab_index=0, navigation_count=1): |
| 1061 """Navigate the given tab to the given URL. |
| 1062 |
| 1063 Note that this method also activates the corresponding tab/window |
| 1064 if it's not active already. Blocks until page has loaded. |
| 1065 |
| 1066 Args: |
| 1067 url: The URL to which to navigate. |
| 1068 windex: The index of the browser window to work on. Defaults to the first |
| 1069 window. |
| 1070 tab_index: The index of the tab to work on. Defaults to the first tab. |
| 1071 navigation_count: the number of navigations to wait for. Defaults to 1. |
| 1072 """ |
| 1073 cmd_dict = { |
| 1074 'command': 'NavigateToURL', |
| 1075 'url': url, |
| 1076 'windex': windex, |
| 1077 'tab_index': tab_index, |
| 1078 'navigation_count': navigation_count, |
| 1079 } |
| 1080 self._GetResultFromJSONRequest(cmd_dict, windex=windex) |
| 1081 |
| 1082 def ReloadTab(self, windex, tab_index): |
| 1083 """Reload the given tab. |
| 1084 |
| 1085 Blocks until the page has reloaded. |
| 1086 |
| 1087 Args: |
| 1088 windex: The index of the browser window to work on. |
| 1089 tab_index: The index of the tab to reload. |
| 1090 """ |
| 1091 cmd_dict = { |
| 1092 'command': 'Reload', |
| 1093 'windex': windex, |
| 1094 'tab_index': tab_index, |
| 1095 } |
| 1096 self._GetResultFromJSONRequest(cmd_dict, windex=windex) |
| 1097 |
| 1098 def ReloadActiveTab(self, windex=0): |
| 1099 """Reload an active tab. |
| 1100 |
| 1101 Args: |
| 1102 windex: The index of the browser window to work on. Defaults to the first |
| 1103 window. |
| 1104 """ |
| 1105 self.ReloadTab(windex, self.GetActiveTabIndex(windex)) |
| 1106 |
| 1107 def GetActiveTabIndex(self, windex=0): |
| 1108 """Get the index of the currently active tab in the given browser window. |
| 1109 |
| 1110 Args: |
| 1111 windex: The index of the browser window to work on. Defaults to the first |
| 1112 window. |
| 1113 """ |
| 1114 cmd_dict = { |
| 1115 'command': 'GetActiveTabIndex', |
| 1116 'windex': windex, |
| 1117 } |
| 1118 return self._GetResultFromJSONRequest(cmd_dict, |
| 1119 windex=windex).get('tab_index') |
| 1120 |
| 1121 def AppendTab(self, url, windex=0): |
| 1122 """Append a new tab. |
| 1123 |
| 1124 Create a new tab at the end of given or first browser window and activate |
| 1125 it. Blocks until the page is loaded. |
| 1126 |
| 1127 Args: |
| 1128 url: The url to load, can be string or a GURL object. |
| 1129 windex: The index of the browser window to work on. Defaults to the first |
| 1130 window. |
| 1131 """ |
| 1132 if isinstance(url, GURL): |
| 1133 url = url.spec() |
| 1134 cmd_dict = { |
| 1135 'command': 'AppendTab', |
| 1136 'url': url, |
| 1137 'windex': windex, |
| 1138 } |
| 1139 return self._GetResultFromJSONRequest(cmd_dict, windex=windex).get('result') |
| 1140 |
1060 def GetBookmarkModel(self, windex=0): | 1141 def GetBookmarkModel(self, windex=0): |
1061 """Return the bookmark model as a BookmarkModel object. | 1142 """Return the bookmark model as a BookmarkModel object. |
1062 | 1143 |
1063 This is a snapshot of the bookmark model; it is not a proxy and | 1144 This is a snapshot of the bookmark model; it is not a proxy and |
1064 does not get updated as the bookmark model changes. | 1145 does not get updated as the bookmark model changes. |
1065 """ | 1146 """ |
1066 bookmarks_as_json = self._GetBookmarksAsJSON(windex) | 1147 bookmarks_as_json = self._GetBookmarksAsJSON(windex) |
1067 if not bookmarks_as_json: | 1148 if not bookmarks_as_json: |
1068 raise JSONInterfaceError('Could not resolve browser proxy.') | 1149 raise JSONInterfaceError('Could not resolve browser proxy.') |
1069 return bookmark_model.BookmarkModel(bookmarks_as_json) | 1150 return bookmark_model.BookmarkModel(bookmarks_as_json) |
(...skipping 2084 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3154 """Removes all events currently in the AutomationEventQueue. | 3235 """Removes all events currently in the AutomationEventQueue. |
3155 | 3236 |
3156 Raises: | 3237 Raises: |
3157 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 3238 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
3158 """ | 3239 """ |
3159 cmd_dict = { | 3240 cmd_dict = { |
3160 'command': 'ClearEventQueue', | 3241 'command': 'ClearEventQueue', |
3161 } | 3242 } |
3162 return self._GetResultFromJSONRequest(cmd_dict, windex=None) | 3243 return self._GetResultFromJSONRequest(cmd_dict, windex=None) |
3163 | 3244 |
3164 def AppendTab(self, url, windex=0): | |
3165 """Create a new tab. | |
3166 | |
3167 Create a new tab at the end of given or first browser window | |
3168 and activate it. Blocks until the url is loaded. | |
3169 | |
3170 Args: | |
3171 url: The url to load, can be string or a GURL object. | |
3172 windex: Index of the window to open a tab in. Default 0 - first window. | |
3173 | |
3174 Returns: | |
3175 True on success. | |
3176 """ | |
3177 if type(url) is GURL: | |
3178 gurl = url | |
3179 else: | |
3180 gurl = GURL(url) | |
3181 return pyautolib.PyUITestBase.AppendTab(self, gurl, windex) | |
3182 | |
3183 def WaitUntilNavigationCompletes(self, tab_index=0, windex=0): | 3245 def WaitUntilNavigationCompletes(self, tab_index=0, windex=0): |
3184 """Wait until the specified tab is done navigating. | 3246 """Wait until the specified tab is done navigating. |
3185 | 3247 |
3186 It is safe to call ExecuteJavascript() as soon as the call returns. If | 3248 It is safe to call ExecuteJavascript() as soon as the call returns. If |
3187 there is no outstanding navigation the call will return immediately. | 3249 there is no outstanding navigation the call will return immediately. |
3188 | 3250 |
3189 Args: | 3251 Args: |
3190 tab_index: index of the tab. | 3252 tab_index: index of the tab. |
3191 windex: index of the window. | 3253 windex: index of the window. |
3192 | 3254 |
(...skipping 2794 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5987 successful = result.wasSuccessful() | 6049 successful = result.wasSuccessful() |
5988 if not successful: | 6050 if not successful: |
5989 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename) | 6051 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename) |
5990 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \ | 6052 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \ |
5991 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL) | 6053 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL) |
5992 sys.exit(not successful) | 6054 sys.exit(not successful) |
5993 | 6055 |
5994 | 6056 |
5995 if __name__ == '__main__': | 6057 if __name__ == '__main__': |
5996 Main() | 6058 Main() |
OLD | NEW |