| Index: chrome/test/chromedriver/test/run_py_tests.py
|
| diff --git a/chrome/test/chromedriver/test/run_py_tests.py b/chrome/test/chromedriver/test/run_py_tests.py
|
| index 2b106a6783a372544520a9fcae0f182b673be9e2..5e3a5c9a230c6921806a238c5952248eae522e3c 100755
|
| --- a/chrome/test/chromedriver/test/run_py_tests.py
|
| +++ b/chrome/test/chromedriver/test/run_py_tests.py
|
| @@ -18,6 +18,7 @@ import threading
|
| import time
|
| import unittest
|
| import urllib2
|
| +import shutil
|
|
|
| _THIS_DIR = os.path.abspath(os.path.dirname(__file__))
|
| sys.path.insert(1, os.path.join(_THIS_DIR, os.pardir))
|
| @@ -152,7 +153,7 @@ class ChromeDriverBaseTest(unittest.TestCase):
|
| except:
|
| pass
|
|
|
| - def CreateDriver(self, server_url=None, **kwargs):
|
| + def CreateDriver(self, server_url=None, download_dir=None, **kwargs):
|
| if server_url is None:
|
| server_url = _CHROMEDRIVER_SERVER_URL
|
|
|
| @@ -170,6 +171,7 @@ class ChromeDriverBaseTest(unittest.TestCase):
|
| android_package=android_package,
|
| android_activity=android_activity,
|
| android_process=android_process,
|
| + download_dir=download_dir,
|
| **kwargs)
|
| self._drivers += [driver]
|
| return driver
|
| @@ -223,8 +225,8 @@ class ChromeDriverTest(ChromeDriverBaseTest):
|
| Returns:
|
| Handle to a new window. None if timeout.
|
| """
|
| - timeout = time.time() + 20
|
| - while time.time() < timeout:
|
| + deadline = time.time() + 20
|
| + while time.time() < deadline:
|
| new_handles = self._driver.GetWindowHandles()
|
| if len(new_handles) > len(old_handles):
|
| for index, old_handle in enumerate(old_handles):
|
| @@ -750,6 +752,61 @@ class ChromeDriverAndroidTest(ChromeDriverBaseTest):
|
| self._drivers[0].Quit()
|
| self._drivers[0] = self.CreateDriver()
|
|
|
| +class ChromeDownloadDirTest(ChromeDriverBaseTest):
|
| +
|
| + def testFileDownLoad(self):
|
| + try:
|
| + self.download_dir = tempfile.mkdtemp()
|
| + download_name = os.path.join(self.download_dir, 'a_red_dot.png')
|
| + driver = self.CreateDriver(download_dir=self.download_dir)
|
| + driver.Load(ChromeDriverTest.GetHttpUrlForFile(
|
| + '/chromedriver/download.html'))
|
| + driver.FindElement('id', 'red-dot').Click()
|
| +
|
| + deadline = time.time() + 60
|
| + while True:
|
| + time.sleep(0.1)
|
| + if os.path.isfile(download_name) or time.time() > deadline:
|
| + break
|
| + self.assertTrue(os.path.isfile(download_name), "Failed to download file!")
|
| + finally:
|
| + shutil.rmtree(self.download_dir)
|
| +
|
| + def testDownloadDirectoryOverridesExistingPreferences(self):
|
| + """ test existing prefence profile - check setting if it is correct """
|
| +
|
| + try:
|
| + user_data_dir = tempfile.mkdtemp()
|
| + tmp_download_dir = tempfile.mkdtemp()
|
| + sub_dir = os.path.join(user_data_dir, 'Default')
|
| + os.mkdir(sub_dir)
|
| + prefs_file_path = os.path.join(sub_dir, 'Preferences')
|
| +
|
| + prefs = {
|
| + 'test': 'this should not be changed',
|
| + 'download': {
|
| + 'default_directory': '/old/download/directory'
|
| + }
|
| + }
|
| +
|
| + with open(prefs_file_path, 'w') as f:
|
| + json.dump(prefs, f)
|
| +
|
| + driver = self.CreateDriver(
|
| + chrome_switches=['user-data-dir=' + user_data_dir],
|
| + download_dir = tmp_download_dir)
|
| +
|
| + with open(prefs_file_path) as f:
|
| + prefs = json.load(f)
|
| +
|
| + self.assertEqual('this should not be changed', prefs['test'],
|
| + "Existing preference was unexpectedly overridden")
|
| + download = prefs['download']
|
| + self.assertEqual(download['default_directory'], tmp_download_dir,
|
| + 'Download directory preference was not updated to match capabilities')
|
| + finally:
|
| + shutil.rmtree(user_data_dir)
|
| + shutil.rmtree(tmp_download_dir)
|
|
|
| class ChromeSwitchesCapabilityTest(ChromeDriverBaseTest):
|
| """Tests that chromedriver properly processes chromeOptions.args capabilities.
|
|
|