| Index: chrome/test/webdriver/chromedriver_tests.py
|
| diff --git a/chrome/test/webdriver/chromedriver_tests.py b/chrome/test/webdriver/chromedriver_tests.py
|
| index 0f51df45482f95e47aeb0691397cb238156476da..3c1b2b759898ca4f9c10a46c504a93a1dd3e6779 100755
|
| --- a/chrome/test/webdriver/chromedriver_tests.py
|
| +++ b/chrome/test/webdriver/chromedriver_tests.py
|
| @@ -14,6 +14,7 @@ import hashlib
|
| import os
|
| import platform
|
| import sys
|
| +import tempfile
|
| import unittest
|
| import urllib
|
| import urllib2
|
| @@ -31,6 +32,7 @@ try:
|
| except ImportError:
|
| import json
|
|
|
| +from selenium.common.exceptions import WebDriverException
|
| from selenium.webdriver.remote.command import Command
|
| from selenium.webdriver.remote.webdriver import WebDriver
|
| from selenium.webdriver.common.keys import Keys
|
| @@ -178,7 +180,6 @@ class WebserverTest(unittest.TestCase):
|
| """Tests the built-in ChromeDriver webserver."""
|
|
|
| def testShouldNotServeFilesByDefault(self):
|
| - launcher = ChromeDriverLauncher()
|
| try:
|
| SendRequest(launcher.GetURL(), method='GET')
|
| self.fail('Should have raised a urllib.HTTPError for returned 403')
|
| @@ -290,7 +291,7 @@ class CookieTest(unittest.TestCase):
|
| cookie_dict = None
|
| cookie_dict = self._driver.get_cookie("chromedriver_cookie_test")
|
| cookie_dict = {}
|
| - cookie_dict["name"]= "chromedriver_cookie_test"
|
| + cookie_dict["name"] = "chromedriver_cookie_test"
|
| cookie_dict["value"] = "this is a test"
|
| self._driver.add_cookie(cookie_dict)
|
| cookie_dict = self._driver.get_cookie("chromedriver_cookie_test")
|
| @@ -623,6 +624,80 @@ class AutofillTest(unittest.TestCase):
|
| 'Saved CC line item not same as what was entered.')
|
|
|
|
|
| +class FileUploadControlTest(unittest.TestCase):
|
| + """Tests dealing with file upload control."""
|
| +
|
| + def setUp(self):
|
| + self._launcher = ChromeDriverLauncher(root_path=os.path.dirname(__file__))
|
| + self._driver = WebDriver(self._launcher.GetURL(),
|
| + DesiredCapabilities.CHROME)
|
| +
|
| + def tearDown(self):
|
| + self._driver.quit()
|
| + self._launcher.Kill()
|
| +
|
| + def testSetFilePathToFileUploadControl(self):
|
| + """Verify a file path is set to the file upload control."""
|
| + self._driver.get(self._launcher.GetURL() + '/upload.html')
|
| +
|
| + file = tempfile.NamedTemporaryFile()
|
| +
|
| + fileupload_single = self._driver.find_element_by_name('fileupload_single')
|
| + multiple = fileupload_single.get_attribute('multiple')
|
| + self.assertEqual('false', multiple)
|
| + fileupload_single.send_keys(file.name)
|
| + path = fileupload_single.value
|
| + self.assertTrue(path.endswith(os.path.basename(file.name)))
|
| +
|
| + def testSetMultipleFilePathsToFileuploadControlWithoutMultipleWillFail(self):
|
| + """Verify setting file paths to the file upload control without 'multiple'
|
| + attribute will fail."""
|
| + self._driver.get(self._launcher.GetURL() + '/upload.html')
|
| +
|
| + files = []
|
| + filepaths = []
|
| + for index in xrange(4):
|
| + file = tempfile.NamedTemporaryFile()
|
| + # We need to hold the file objects because the files will be deleted on
|
| + # GC.
|
| + files.append(file)
|
| + filepath = file.name
|
| + filepaths.append(filepath)
|
| +
|
| + fileupload_single = self._driver.find_element_by_name('fileupload_single')
|
| + multiple = fileupload_single.get_attribute('multiple')
|
| + self.assertEqual('false', multiple)
|
| + self.assertRaises(WebDriverException, fileupload_single.send_keys,
|
| + filepaths[0], filepaths[1], filepaths[2], filepaths[3])
|
| +
|
| + def testSetMultipleFilePathsToFileUploadControl(self):
|
| + """Verify multiple file paths are set to the file upload control."""
|
| + self._driver.get(self._launcher.GetURL() + '/upload.html')
|
| +
|
| + files = []
|
| + filepaths = []
|
| + filenames = set()
|
| + for index in xrange(4):
|
| + file = tempfile.NamedTemporaryFile()
|
| + files.append(file)
|
| + filepath = file.name
|
| + filepaths.append(filepath)
|
| + filenames.add(os.path.basename(filepath))
|
| +
|
| + fileupload_multi = self._driver.find_element_by_name('fileupload_multi')
|
| + multiple = fileupload_multi.get_attribute('multiple')
|
| + self.assertEqual('true', multiple)
|
| + fileupload_multi.send_keys(filepaths[0], filepaths[1], filepaths[2],
|
| + filepaths[3])
|
| +
|
| + files_on_element = self._driver.execute_script(
|
| + 'return document.getElementById("fileupload_multi").files;')
|
| + self.assertTrue(files_on_element)
|
| + self.assertEqual(4, len(files_on_element))
|
| + for f in files_on_element:
|
| + self.assertTrue(f['name'] in filenames)
|
| +
|
| +
|
| if __name__ == '__main__':
|
| unittest.main(module='chromedriver_tests',
|
| testRunner=GTestTextTestRunner(verbosity=1))
|
|
|