Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 """Tests for ChromeDriver. | 7 """Tests for ChromeDriver. |
| 8 | 8 |
| 9 If your test is testing a specific part of the WebDriver API, consider adding | 9 If your test is testing a specific part of the WebDriver API, consider adding |
| 10 it to the appropriate place in the WebDriver tree instead. | 10 it to the appropriate place in the WebDriver tree instead. |
| 11 """ | 11 """ |
| 12 | 12 |
| 13 import platform | 13 import platform |
| 14 import os | 14 import os |
| 15 import sys | 15 import sys |
| 16 import unittest | 16 import unittest |
| 17 import urllib2 | 17 import urllib2 |
| 18 import urlparse | 18 import urlparse |
| 19 | 19 |
| 20 from chromedriver_launcher import ChromeDriverLauncher | 20 from chromedriver_launcher import ChromeDriverLauncher |
| 21 import chromedriver_paths | 21 import chromedriver_paths |
| 22 from gtest_text_test_runner import GTestTextTestRunner | 22 from gtest_text_test_runner import GTestTextTestRunner |
| 23 | 23 |
| 24 sys.path += [chromedriver_paths.SRC_THIRD_PARTY] | 24 sys.path += [chromedriver_paths.SRC_THIRD_PARTY] |
| 25 sys.path += [chromedriver_paths.PYTHON_BINDINGS] | 25 sys.path += [chromedriver_paths.PYTHON_BINDINGS] |
| 26 | 26 |
| 27 import simplejson as json | 27 import simplejson as json |
| 28 | 28 |
| 29 from selenium.webdriver.remote.command import Command | |
| 29 from selenium.webdriver.remote.webdriver import WebDriver | 30 from selenium.webdriver.remote.webdriver import WebDriver |
| 30 | 31 |
| 31 | 32 |
| 32 class Request(urllib2.Request): | 33 class Request(urllib2.Request): |
| 33 """Extends urllib2.Request to support all HTTP request types.""" | 34 """Extends urllib2.Request to support all HTTP request types.""" |
| 34 | 35 |
| 35 def __init__(self, url, method=None, data=None): | 36 def __init__(self, url, method=None, data=None): |
| 36 """Initialise a new HTTP request. | 37 """Initialise a new HTTP request. |
| 37 | 38 |
| 38 Arguments: | 39 Arguments: |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 101 self.assertEquals('POST', expected.hdrs['Allow']) | 102 self.assertEquals('POST', expected.hdrs['Allow']) |
| 102 | 103 |
| 103 def testShouldGetA404WhenAttemptingToDeleteAnUnknownSession(self): | 104 def testShouldGetA404WhenAttemptingToDeleteAnUnknownSession(self): |
| 104 request_url = self._launcher.GetURL() + '/session/unkown_session_id' | 105 request_url = self._launcher.GetURL() + '/session/unkown_session_id' |
| 105 try: | 106 try: |
| 106 SendRequest(request_url, method='DELETE') | 107 SendRequest(request_url, method='DELETE') |
| 107 self.fail('Should have raised a urllib.HTTPError for returned 404') | 108 self.fail('Should have raised a urllib.HTTPError for returned 404') |
| 108 except urllib2.HTTPError, expected: | 109 except urllib2.HTTPError, expected: |
| 109 self.assertEquals(404, expected.code) | 110 self.assertEquals(404, expected.code) |
| 110 | 111 |
| 112 def testShouldReturn204ForFaviconRequests(self): | |
| 113 request_url = self._launcher.GetURL() + '/favicon.ico' | |
| 114 response = SendRequest(request_url, method='GET') | |
| 115 try: | |
| 116 self.assertEquals(204, response.code) | |
| 117 finally: | |
| 118 response.close() | |
| 119 | |
| 111 def testCanStartChromeDriverOnSpecificPort(self): | 120 def testCanStartChromeDriverOnSpecificPort(self): |
| 112 launcher = ChromeDriverLauncher(port=9520) | 121 launcher = ChromeDriverLauncher(port=9520) |
| 113 self.assertEquals(9520, launcher.GetPort()) | 122 self.assertEquals(9520, launcher.GetPort()) |
| 114 driver = WebDriver(launcher.GetURL(), {}) | 123 driver = WebDriver(launcher.GetURL(), {}) |
| 115 driver.quit() | 124 driver.quit() |
| 116 launcher.Kill() | 125 launcher.Kill() |
| 117 | 126 |
| 118 | 127 |
| 119 class CookieTest(unittest.TestCase): | 128 class CookieTest(unittest.TestCase): |
| 120 """Cookie test for the json webdriver protocol""" | 129 """Cookie test for the json webdriver protocol""" |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 281 self.assertTrue(isinstance(data, dict)) | 290 self.assertTrue(isinstance(data, dict)) |
| 282 self.assertEquals(0, data['status']) | 291 self.assertEquals(0, data['status']) |
| 283 | 292 |
| 284 url_parts = urlparse.urlparse(self.session_url)[2].split('/') | 293 url_parts = urlparse.urlparse(self.session_url)[2].split('/') |
| 285 self.assertEquals(5, len(url_parts)) | 294 self.assertEquals(5, len(url_parts)) |
| 286 self.assertEquals('', url_parts[0]) | 295 self.assertEquals('', url_parts[0]) |
| 287 self.assertEquals('wd', url_parts[1]) | 296 self.assertEquals('wd', url_parts[1]) |
| 288 self.assertEquals('hub', url_parts[2]) | 297 self.assertEquals('hub', url_parts[2]) |
| 289 self.assertEquals('session', url_parts[3]) | 298 self.assertEquals('session', url_parts[3]) |
| 290 self.assertEquals(data['sessionId'], url_parts[4]) | 299 self.assertEquals(data['sessionId'], url_parts[4]) |
| 291 | 300 |
|
kkania
2011/03/24 17:19:33
how about a test for switching to a frame by eleme
Jason Leyba
2011/03/24 17:27:53
There are some in the WebDriver python tests, whic
| |
| 292 | 301 |
| 302 # TODO(jleyba): Port this to WebDriver's own python test suite. | |
| 303 class ElementEqualityTest(unittest.TestCase): | |
| 304 """Tests that the server properly checks element equality.""" | |
| 305 | |
| 306 def setUp(self): | |
| 307 self._launcher = ChromeDriverLauncher(root_path=os.path.dirname(__file__)) | |
| 308 self._driver = WebDriver(self._launcher.GetURL(), {}) | |
| 309 | |
| 310 def tearDown(self): | |
| 311 self._driver.quit() | |
| 312 self._launcher.Kill() | |
| 313 | |
| 314 def testElementEquality(self): | |
| 315 self._driver.get(self._launcher.GetURL() + '/test_page.html') | |
| 316 body1 = self._driver.find_element_by_tag_name('body') | |
| 317 body2 = self._driver.execute_script('return document.body') | |
| 318 | |
| 319 # TODO(jleyba): WebDriver's python bindings should expose a proper API | |
| 320 # for this. | |
| 321 result = body1.execute(Command.ELEMENT_EQUALS, { | |
| 322 'other': body2.id | |
| 323 }) | |
| 324 self.assertTrue(result['value']) | |
| 325 | |
| 326 | |
| 293 if __name__ == '__main__': | 327 if __name__ == '__main__': |
| 294 unittest.main(module='chromedriver_tests', | 328 unittest.main(module='chromedriver_tests', |
| 295 testRunner=GTestTextTestRunner(verbosity=1)) | 329 testRunner=GTestTextTestRunner(verbosity=1)) |
| OLD | NEW |