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

Side by Side Diff: chrome/test/chromedriver/client/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: add test testDownloadDirectoryOverridesExistingPreferences 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 unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
samuong 2014/10/15 22:08:17 This file is still in the wrong location. Could yo
2 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Copyright 2013 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 """End to end tests for ChromeDriver.""" 6 """End to end tests for ChromeDriver."""
7 7
8 import base64 8 import base64
9 import json 9 import json
10 import math 10 import math
11 import optparse 11 import optparse
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 super(ChromeDriverBaseTest, self).__init__(*args, **kwargs) 145 super(ChromeDriverBaseTest, self).__init__(*args, **kwargs)
146 self._drivers = [] 146 self._drivers = []
147 147
148 def tearDown(self): 148 def tearDown(self):
149 for driver in self._drivers: 149 for driver in self._drivers:
150 try: 150 try:
151 driver.Quit() 151 driver.Quit()
152 except: 152 except:
153 pass 153 pass
154 154
155 def CreateDriver(self, server_url=None, **kwargs): 155 def CreateDriver(self, server_url=None, download_dir=None, **kwargs):
156 if server_url is None: 156 if server_url is None:
157 server_url = _CHROMEDRIVER_SERVER_URL 157 server_url = _CHROMEDRIVER_SERVER_URL
158 158
159 android_package = None 159 android_package = None
160 android_activity = None 160 android_activity = None
161 android_process = None 161 android_process = None
162 if _ANDROID_PACKAGE_KEY: 162 if _ANDROID_PACKAGE_KEY:
163 android_package = constants.PACKAGE_INFO[_ANDROID_PACKAGE_KEY].package 163 android_package = constants.PACKAGE_INFO[_ANDROID_PACKAGE_KEY].package
164 if _ANDROID_PACKAGE_KEY == 'chromedriver_webview_shell': 164 if _ANDROID_PACKAGE_KEY == 'chromedriver_webview_shell':
165 android_activity = constants.PACKAGE_INFO[_ANDROID_PACKAGE_KEY].activity 165 android_activity = constants.PACKAGE_INFO[_ANDROID_PACKAGE_KEY].activity
166 android_process = '%s:main' % android_package 166 android_process = '%s:main' % android_package
167 167
168 driver = chromedriver.ChromeDriver(server_url, 168 driver = chromedriver.ChromeDriver(server_url, download_dir,
169 chrome_binary=_CHROME_BINARY, 169 chrome_binary=_CHROME_BINARY,
170 android_package=android_package, 170 android_package=android_package,
171 android_activity=android_activity, 171 android_activity=android_activity,
172 android_process=android_process, 172 android_process=android_process,
173 **kwargs) 173 **kwargs)
174 self._drivers += [driver] 174 self._drivers += [driver]
175 return driver 175 return driver
176 176
177 177
178 class ChromeDriverTest(ChromeDriverBaseTest): 178 class ChromeDriverTest(ChromeDriverBaseTest):
(...skipping 17 matching lines...) Expand all
196 def GlobalTearDown(): 196 def GlobalTearDown():
197 if _ANDROID_PACKAGE_KEY: 197 if _ANDROID_PACKAGE_KEY:
198 forwarder.Forwarder.UnmapAllDevicePorts(ChromeDriverTest._device) 198 forwarder.Forwarder.UnmapAllDevicePorts(ChromeDriverTest._device)
199 ChromeDriverTest._http_server.Shutdown() 199 ChromeDriverTest._http_server.Shutdown()
200 200
201 @staticmethod 201 @staticmethod
202 def GetHttpUrlForFile(file_path): 202 def GetHttpUrlForFile(file_path):
203 return ChromeDriverTest._http_server.GetUrl() + file_path 203 return ChromeDriverTest._http_server.GetUrl() + file_path
204 204
205 def setUp(self): 205 def setUp(self):
206 self._driver = self.CreateDriver() 206 if self._testMethodName == 'testFileDownLoad':
207 self.download_dir = tempfile.mkdtemp(dir='/tmp')
samuong 2014/10/15 22:08:18 By default, tempfile.mkdtemp() will use dir='/tmp'
208 else:
209 self.download_dir = None
210 self._driver = self.CreateDriver(download_dir=self.download_dir)
211
212 def tearDown(self):
213 try:
214 if self.download_dir:
215 os.removedirs(self.download_dir)
216 self.download_dir = None
217 except:
218 pass
samuong 2014/10/15 22:08:17 If and when this fails, let's print out a proper e
219 ChromeDriverBaseTest.tearDown(self)
207 220
208 def testStartStop(self): 221 def testStartStop(self):
209 pass 222 pass
210 223
224 def testFileDownLoad(self):
225 # check download file to make sure it does not exist
226 download_name = self.download_dir + "/a_red_dot.png";
samuong 2014/10/15 22:08:18 Windows uses "\" as the directory separator, so yo
227 self.assertFalse(os.path.isfile(download_name),
samuong 2014/10/15 22:08:18 If there's a directory called "a_red_dot.png" then
228 "Test prefer download directory failed! - download file already exist")
229 #
230 self._driver.Load(self.GetHttpUrlForFile('/chromedriver/download.html'))
231 self._driver.FindElement('id', 'red-dot').Click()
232 # wait until download completed
233 timeout = time.time() + 60*1 # 1 minutes from now
samuong 2014/10/15 22:08:18 How about we call this variable "deadline" instead
234 while True:
235 time.sleep(0.1)
236 if os.path.isfile(download_name) or time.time() > timeout:
237 break
238 #
239 self.assertTrue(os.path.isfile(download_name),
240 "Test user prefer download directory failed!")
241 os.remove(download_name)
242
211 def testLoadUrl(self): 243 def testLoadUrl(self):
212 self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html')) 244 self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html'))
213 245
214 def testGetCurrentWindowHandle(self): 246 def testGetCurrentWindowHandle(self):
215 self._driver.GetCurrentWindowHandle() 247 self._driver.GetCurrentWindowHandle()
216 248
217 def _WaitForNewWindow(self, old_handles): 249 def _WaitForNewWindow(self, old_handles):
218 """Wait for at least one new window to show up in 20 seconds. 250 """Wait for at least one new window to show up in 20 seconds.
219 251
220 Args: 252 Args:
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 except urllib2.URLError as e: 775 except urllib2.URLError as e:
744 print 'Unable to fetch current version info from omahaproxy (%s)' % e 776 print 'Unable to fetch current version info from omahaproxy (%s)' % e
745 777
746 def testDeviceManagement(self): 778 def testDeviceManagement(self):
747 self._drivers = [self.CreateDriver() for x in 779 self._drivers = [self.CreateDriver() for x in
748 android_commands.GetAttachedDevices()] 780 android_commands.GetAttachedDevices()]
749 self.assertRaises(chromedriver.UnknownError, self.CreateDriver) 781 self.assertRaises(chromedriver.UnknownError, self.CreateDriver)
750 self._drivers[0].Quit() 782 self._drivers[0].Quit()
751 self._drivers[0] = self.CreateDriver() 783 self._drivers[0] = self.CreateDriver()
752 784
785 class ChromeDownloadDirTest(ChromeDriverBaseTest):
786
787 # test existing prefence profile - check setting if it is correct
788 def testDownloadDirectoryOverridesExistingPreferences(self):
789 userDataDir='/usr/local/google/home/andrewcheng/zz'
samuong 2014/10/15 22:08:17 Please don't hardcode your home directory into tes
790 defPrefFile = userDataDir+'/Default/Preferences'
samuong 2014/10/15 22:08:17 For both defPrefFile and userDataDir, use names wi
791 #
samuong 2014/10/15 22:08:18 Also for consistency with the existing style in th
792 data = {}
793 test_dir = {}
794 test_dir['directory_upgrade'] = 'true'
795 test_dir['default_directory'] = '/old/download/directory'
796 data['test'] = 'this should not be changed'
797 data['download'] = test_dir
samuong 2014/10/15 22:08:18 How about we change these lines above so that data
798 #
799 with open(defPrefFile, 'w') as outfile:
800 json.dump(data, outfile)
801
802 driver = self.CreateDriver(chrome_switches=
803 ['user-data-dir='+userDataDir],
804 download_dir="/usr/local/google/home/andrewcheng/zz")
samuong 2014/10/15 22:08:17 You're setting the user data directory to the same
805
806 with open(defPrefFile) as inFile: data = json.load(inFile)
samuong 2014/10/15 22:08:18 Please break the above line up into two lines: wi
807 self.assertEqual(data['test'], 'this should not be changed',
samuong 2014/10/15 22:08:17 Before doing this assert, please also check that t
808 "test data has changed")
samuong 2014/10/15 22:08:18 "test data has changed" doesn't really tell anyone
809 download = data['download']
810 self.assertEqual(download['default_directory'],
811 '/usr/local/google/home/andrewcheng/zz',
812 "default_directory is not set")
753 813
754 class ChromeSwitchesCapabilityTest(ChromeDriverBaseTest): 814 class ChromeSwitchesCapabilityTest(ChromeDriverBaseTest):
755 """Tests that chromedriver properly processes chromeOptions.args capabilities. 815 """Tests that chromedriver properly processes chromeOptions.args capabilities.
756 816
757 Makes sure the switches are passed to Chrome. 817 Makes sure the switches are passed to Chrome.
758 """ 818 """
759 819
760 def testSwitchWithoutArgument(self): 820 def testSwitchWithoutArgument(self):
761 """Tests that switch --dom-automation can be passed to Chrome. 821 """Tests that switch --dom-automation can be passed to Chrome.
762 822
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
1171 1231
1172 all_tests_suite = unittest.defaultTestLoader.loadTestsFromModule( 1232 all_tests_suite = unittest.defaultTestLoader.loadTestsFromModule(
1173 sys.modules[__name__]) 1233 sys.modules[__name__])
1174 tests = unittest_util.FilterTestSuite(all_tests_suite, options.filter) 1234 tests = unittest_util.FilterTestSuite(all_tests_suite, options.filter)
1175 ChromeDriverTest.GlobalSetUp() 1235 ChromeDriverTest.GlobalSetUp()
1176 MobileEmulationCapabilityTest.GlobalSetUp() 1236 MobileEmulationCapabilityTest.GlobalSetUp()
1177 result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(tests) 1237 result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(tests)
1178 ChromeDriverTest.GlobalTearDown() 1238 ChromeDriverTest.GlobalTearDown()
1179 MobileEmulationCapabilityTest.GlobalTearDown() 1239 MobileEmulationCapabilityTest.GlobalTearDown()
1180 sys.exit(len(result.failures) + len(result.errors)) 1240 sys.exit(len(result.failures) + len(result.errors))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698