summaryrefslogtreecommitdiffstats
path: root/chrome/test/pyautolib
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/test/pyautolib')
-rw-r--r--chrome/test/pyautolib/pyauto.py105
1 files changed, 61 insertions, 44 deletions
diff --git a/chrome/test/pyautolib/pyauto.py b/chrome/test/pyautolib/pyauto.py
index 10a4504..72304d5 100644
--- a/chrome/test/pyautolib/pyauto.py
+++ b/chrome/test/pyautolib/pyauto.py
@@ -28,6 +28,7 @@ to unittest.py
import logging
import optparse
import os
+import re
import shutil
import sys
import tempfile
@@ -259,33 +260,6 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
time.sleep(retry_sleep)
return False
- def _GetResultFromJSONRequest(self, cmd_dict, windex=0):
- """Issue call over the JSON automation channel and fetch output.
-
- This method packages the given dictionary into a json string, sends it
- over the JSON automation channel, loads the json output string returned,
- and returns it back as a dictionary.
-
- Args:
- cmd_dict: the command dictionary. It must have a 'command' key
- Sample:
- {
- 'command': 'SetOmniboxText',
- 'text': text,
- }
- windex: 0-based window index on which to work. Default: 0 (first window)
-
- Returns:
- a dictionary for the output returned by the automation channel.
-
- Raises:
- pyauto_errors.JSONInterfaceError if the automation call returns an error.
- """
- ret_dict = json.loads(self._SendJSONRequest(windex, json.dumps(cmd_dict)))
- if ret_dict.has_key('error'):
- raise JSONInterfaceError(ret_dict['error'])
- return ret_dict
-
def GetBookmarkModel(self):
"""Return the bookmark model as a BookmarkModel object.
@@ -344,7 +318,9 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'command': 'SetOmniboxText',
'text': text,
}
- self._GetResultFromJSONRequest(cmd_dict, windex=windex)
+ ret_dict = json.loads(self._SendJSONRequest(windex, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def WaitUntilOmniboxQueryDone(self, windex=0):
"""Wait until omnibox has finished populating results.
@@ -372,7 +348,9 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'command': 'OmniboxMovePopupSelection',
'count': count,
}
- self._GetResultFromJSONRequest(cmd_dict, windex=windex)
+ ret_dict = json.loads(self._SendJSONRequest(windex, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def OmniboxAcceptInput(self, windex=0):
"""Accepts the current string of text in the omnibox.
@@ -387,7 +365,9 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
cmd_dict = {
'command': 'OmniboxAcceptInput',
}
- self._GetResultFromJSONRequest(cmd_dict, windex=windex)
+ ret_dict = json.loads(self._SendJSONRequest(windex, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def GetPrefsInfo(self):
"""Return info about preferences.
@@ -429,13 +409,16 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'path': path,
'value': value,
}
- self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def WaitForAllDownloadsToComplete(self):
"""Wait for all downloads to complete."""
# Implementation detail: uses the generic "JSON command" model
# (experimental)
- self._GetResultFromJSONRequest({'command': 'WaitForAllDownloadsToComplete'})
+ self._SendJSONRequest(0, json.dumps({'command':
+ 'WaitForAllDownloadsToComplete'}))
def DownloadAndWaitForStart(self, file_url):
"""Trigger download for the given url and wait for downloads to start.
@@ -478,7 +461,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
cmd_dict['width'] = width
if height:
cmd_dict['height'] = height
- self._GetResultFromJSONRequest(cmd_dict, windex=windex)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
def GetBrowserInfo(self):
"""Return info about the browser.
@@ -538,7 +524,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
cmd_dict = { # Prepare command for the json interface
'command': 'GetBrowserInfo',
}
- return self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
def GetHistoryInfo(self, search_text=''):
"""Return info about browsing history.
@@ -637,7 +626,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
for credit_card in credit_cards:
if not 'label' in credit_card:
raise JSONInterfaceError('must specify label for all credit cards')
- self._GetResultFromJSONRequest(cmd_dict, windex=window_index)
+ ret_dict = json.loads(self._SendJSONRequest(window_index,
+ json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def GetAutoFillProfile(self, tab_index=0, window_index=0):
"""Return the profile including all profiles and credit cards currently
@@ -659,7 +651,11 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'command': 'GetAutoFillProfile',
'tab_index': tab_index
}
- return self._GetResultFromJSONRequest(cmd_dict, windex=window_index)
+ ret_dict = json.loads(self._SendJSONRequest(window_index,
+ json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
def AddHistoryItem(self, item):
"""Forge a history item for Chrome.
@@ -683,7 +679,9 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
}
if not 'url' in item:
raise JSONInterfaceError('must specify url')
- self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def GetPluginsInfo(self):
"""Return info about plugins.
@@ -708,7 +706,9 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'command': 'EnablePlugin',
'path': path,
}
- self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def DisablePlugin(self, path):
"""Disable the plugin at the given path.
@@ -722,7 +722,9 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'command': 'DisablePlugin',
'path': path,
}
- self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
def GetTabContents(self, tab_index=0, window_index=0):
"""Get the html contents of a tab (a la "view source").
@@ -743,7 +745,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'tab_index': tab_index,
'filename': filename
}
- self._GetResultFromJSONRequest(cmd_dict, windex=window_index)
+ ret_dict = json.loads(self._SendJSONRequest(window_index,
+ json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
try:
f = open(filename)
all_data = f.read()
@@ -782,7 +787,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'first_run': first_run,
'import_items': import_items
}
- return self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
def ClearBrowsingData(self, to_remove, time_period):
"""Clear the specified browsing data. Implements the features available in
@@ -804,7 +812,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
'to_remove': to_remove,
'time_period': time_period
}
- return self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
def SetTheme(self, crx_file_path):
"""Installs the given theme synchronously.
@@ -832,7 +843,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
cmd_dict = {
'command': 'ClearTheme',
}
- self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
def GetThemeInfo(self):
"""Get info about theme.
@@ -860,7 +874,10 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase):
cmd_dict = {
'command': 'GetThemeInfo',
}
- return self._GetResultFromJSONRequest(cmd_dict)
+ ret_dict = json.loads(self._SendJSONRequest(0, json.dumps(cmd_dict)))
+ if ret_dict.has_key('error'):
+ raise JSONInterfaceError(ret_dict['error'])
+ return ret_dict
class PyUITestSuite(pyautolib.PyUITestSuiteBase, unittest.TestSuite):