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

Unified Diff: chrome/test/chromedriver/test/run_py_tests.py

Issue 613163004: [chromedriver] setting browser default download directory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Modified codes based on reviewer's comments Created 6 years, 2 months 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 side-by-side diff with in-line comments
Download patch
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..1ff3472513ec99cc4706c4cae096b0361130b91f 100755
--- a/chrome/test/chromedriver/test/run_py_tests.py
+++ b/chrome/test/chromedriver/test/run_py_tests.py
@@ -152,7 +152,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
@@ -165,7 +165,7 @@ class ChromeDriverBaseTest(unittest.TestCase):
android_activity = constants.PACKAGE_INFO[_ANDROID_PACKAGE_KEY].activity
android_process = '%s:main' % android_package
- driver = chromedriver.ChromeDriver(server_url,
+ driver = chromedriver.ChromeDriver(server_url, download_dir,
samuong 2014/10/16 20:23:41 Put each parameter on a separate line.
andrewcheng 2014/10/17 22:59:54 Done.
chrome_binary=_CHROME_BINARY,
android_package=android_package,
android_activity=android_activity,
@@ -203,11 +203,43 @@ class ChromeDriverTest(ChromeDriverBaseTest):
return ChromeDriverTest._http_server.GetUrl() + file_path
def setUp(self):
- self._driver = self.CreateDriver()
+ if self._testMethodName == 'testFileDownLoad':
samuong 2014/10/16 20:23:40 As we discussed earlier, I don't think this is a v
+ self.download_dir = tempfile.mkdtemp()
+ else:
+ self.download_dir = None
+ self._driver = self.CreateDriver(download_dir=self.download_dir)
+
+ def tearDown(self):
+ try:
+ if self.download_dir:
+ os.removedirs(self.download_dir)
+ self.download_dir = None
+ except:
+ self.assertRaises(chromedriver.UnknownError)
+ ChromeDriverBaseTest.tearDown(self)
def testStartStop(self):
pass
+ def testFileDownLoad(self):
+ # check download file to make sure it does not exist
+ download_name = os.path.join(self.download_dir, 'a_red_dot.png')
+ self.assertFalse(os.path.exists(download_name),
+ "Test prefer download directory failed! - download file already exist")
samuong 2014/10/16 20:23:40 I think you were right in your previous comment th
andrewcheng 2014/10/17 22:59:54 Done.
+
+ self._driver.Load(self.GetHttpUrlForFile('/chromedriver/download.html'))
+ self._driver.FindElement('id', 'red-dot').Click()
+ # wait until download completed
+ timeout = time.time() + 60*1 # 1 minutes from now
samuong 2014/10/16 20:23:40 I think these two comments state the obvious, and
andrewcheng 2014/10/17 22:59:53 another place also has timeout def _WaitForNewWin
+ while True:
+ time.sleep(0.1)
+ if os.path.isfile(download_name) or time.time() > timeout:
+ break
+
+ self.assertTrue(os.path.isfile(download_name),
+ "Test user prefer download directory failed!")
samuong 2014/10/16 20:23:40 I don't think this sentence is grammatically corre
andrewcheng 2014/10/17 22:59:53 good idea
+ os.remove(download_name)
+
def testLoadUrl(self):
self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html'))
@@ -750,6 +782,39 @@ class ChromeDriverAndroidTest(ChromeDriverBaseTest):
self._drivers[0].Quit()
self._drivers[0] = self.CreateDriver()
+class ChromeDownloadDirTest(ChromeDriverBaseTest):
samuong 2014/10/16 20:23:41 Add the following functions here to set up the dow
+
+ # test existing prefence profile - check setting if it is correct
samuong 2014/10/16 20:23:41 Use a docstring here rather than a regular comment
andrewcheng 2014/10/17 22:59:54 Done.
+ def testDownloadDirectoryOverridesExistingPreferences(self):
+ user_data_dir = tempfile.mkdtemp()
+ tmp_download_dir = tempfile.mkdtemp()
samuong 2014/10/16 20:23:40 If you use the setUp method I mentioned above, you
andrewcheng 2014/10/17 22:59:54 not sure how this work, i don't touch for now
+ sub_dir = os.path.join(user_data_dir, 'Default')
+ os.mkdir(sub_dir)
+ def_pref_file = os.path.join(sub_dir, 'Preferences')
samuong 2014/10/16 20:23:41 How about we call this "prefs_file_path"?
andrewcheng 2014/10/17 22:59:54 Done.
+
+ data = {
samuong 2014/10/16 20:23:41 "data" is not a very descriptive name, how about w
andrewcheng 2014/10/17 22:59:53 Done.
+ 'test': 'this should not be changed',
+ 'download': {
+ 'directory_upgrade': 'true',
samuong 2014/10/16 20:23:40 As I mentioned somewhere else in this review, I th
andrewcheng 2014/10/17 22:59:54 Done.
+ 'default_directory': '/old/download/directory'
+ }
+ }
+
+ with open(def_pref_file, 'w') as outfile:
samuong 2014/10/16 20:23:41 "outfile" is not very descriptive, how about we ca
andrewcheng 2014/10/17 22:59:53 this is generic use for short term - as temp, so
+ json.dump(data, outfile)
+
+ driver = self.CreateDriver(chrome_switches=
+ ['user-data-dir=' + user_data_dir],
+ download_dir = tmp_download_dir)
+
+ with open(def_pref_file) as infile:
samuong 2014/10/16 20:23:40 Same as "outfile" - how about we call this "prefs_
andrewcheng 2014/10/17 22:59:52 same comment provide in outfile
+ data = json.load(infile)
+ self.assertEqual(data['test'], 'this should not be changed',
+ "The test data is drop - should stay without change")
samuong 2014/10/16 20:23:41 I don't think this error message is grammatically
andrewcheng 2014/10/17 22:59:54 it will not be set to other value - only disappea
+ download = data['download']
+ self.assertEqual(download['default_directory'],
+ tmp_download_dir,
+ 'default_directory is not set')
samuong 2014/10/16 20:23:40 This is a bit misleading. The default_directory va
andrewcheng 2014/10/17 22:59:54 Done.
class ChromeSwitchesCapabilityTest(ChromeDriverBaseTest):
"""Tests that chromedriver properly processes chromeOptions.args capabilities.

Powered by Google App Engine
This is Rietveld 408576698