OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 ctypes | 8 import ctypes |
9 import optparse | 9 import optparse |
10 import os | 10 import os |
11 import sys | 11 import sys |
12 import unittest | 12 import unittest |
13 | 13 |
14 import chromedriver | 14 import chromedriver |
| 15 import webserver |
15 | 16 |
16 _THIS_DIR = os.path.abspath(os.path.dirname(__file__)) | 17 _THIS_DIR = os.path.abspath(os.path.dirname(__file__)) |
17 sys.path.insert(0, os.path.join(_THIS_DIR, os.pardir, 'pylib')) | 18 sys.path.insert(0, os.path.join(_THIS_DIR, os.pardir, 'pylib')) |
18 | 19 |
| 20 from common import chrome_paths |
19 from common import unittest_util | 21 from common import unittest_util |
20 | 22 |
21 | 23 |
22 class ChromeDriverTest(unittest.TestCase): | 24 class ChromeDriverTest(unittest.TestCase): |
23 """End to end tests for ChromeDriver.""" | 25 """End to end tests for ChromeDriver.""" |
24 | 26 |
| 27 @classmethod |
| 28 def setUpClass(cls): |
| 29 cls._http_server = webserver.WebServer(chrome_paths.GetTestData()) |
| 30 |
| 31 @classmethod |
| 32 def tearDownClass(cls): |
| 33 cls._http_server.Shutdown() |
| 34 |
| 35 @staticmethod |
| 36 def GetHttpUrlForFile(file_path): |
| 37 return ChromeDriverTest._http_server.GetUrl() + file_path |
| 38 |
| 39 def setUp(self): |
| 40 self._driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) |
| 41 |
| 42 def tearDown(self): |
| 43 self._driver.Quit() |
| 44 |
25 def testStartStop(self): | 45 def testStartStop(self): |
26 driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) | 46 pass |
27 driver.Quit() | |
28 | 47 |
29 def testLoadUrl(self): | 48 def testLoadUrl(self): |
30 driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) | 49 self._driver.Load(self.GetHttpUrlForFile('/chromedriver/empty.html')) |
31 driver.Load('http://www.google.com') | |
32 driver.Quit() | |
33 | 50 |
34 def testEvaluateScript(self): | 51 def testEvaluateScript(self): |
35 driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) | 52 self.assertEquals(1, self._driver.ExecuteScript('return 1')) |
36 self.assertEquals(1, driver.ExecuteScript('return 1')) | 53 self.assertEquals(None, self._driver.ExecuteScript('')) |
37 self.assertEquals(None, driver.ExecuteScript('')) | |
38 driver.Quit() | |
39 | 54 |
40 def testEvaluateScriptWithArgs(self): | 55 def testEvaluateScriptWithArgs(self): |
41 driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) | |
42 script = ('document.body.innerHTML = "<div>b</div><div>c</div>";' + | 56 script = ('document.body.innerHTML = "<div>b</div><div>c</div>";' + |
43 'return {stuff: document.querySelectorAll("div")};') | 57 'return {stuff: document.querySelectorAll("div")};') |
44 stuff = driver.ExecuteScript(script)['stuff'] | 58 stuff = self._driver.ExecuteScript(script)['stuff'] |
45 script = 'return arguments[0].innerHTML + arguments[1].innerHTML'; | 59 script = 'return arguments[0].innerHTML + arguments[1].innerHTML'; |
46 self.assertEquals('bc', driver.ExecuteScript(script, stuff[0], stuff[1])) | 60 self.assertEquals( |
47 driver.Quit() | 61 'bc', self._driver.ExecuteScript(script, stuff[0], stuff[1])) |
48 | 62 |
49 def testEvaluateInvalidScript(self): | 63 def testEvaluateInvalidScript(self): |
50 driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) | |
51 self.assertRaises(chromedriver.ChromeDriverException, | 64 self.assertRaises(chromedriver.ChromeDriverException, |
52 driver.ExecuteScript, '{{{') | 65 self._driver.ExecuteScript, '{{{') |
53 driver.Quit() | |
54 | 66 |
55 def testSwitchToFrame(self): | 67 def testSwitchToFrame(self): |
56 driver = chromedriver.ChromeDriver(_CHROMEDRIVER_LIB, _CHROME_BINARY) | 68 self._driver.ExecuteScript( |
57 driver.ExecuteScript( | |
58 'var frame = document.createElement("iframe");' | 69 'var frame = document.createElement("iframe");' |
59 'frame.id="id";' | 70 'frame.id="id";' |
60 'frame.name="name";' | 71 'frame.name="name";' |
61 'document.body.appendChild(frame);') | 72 'document.body.appendChild(frame);') |
62 self.assertTrue(driver.ExecuteScript('return window.top == window')) | 73 self.assertTrue(self._driver.ExecuteScript('return window.top == window')) |
63 driver.SwitchToFrame('id') | 74 self._driver.SwitchToFrame('id') |
64 self.assertTrue(driver.ExecuteScript('return window.top != window')) | 75 self.assertTrue(self._driver.ExecuteScript('return window.top != window')) |
65 driver.SwitchToMainFrame() | 76 self._driver.SwitchToMainFrame() |
66 self.assertTrue(driver.ExecuteScript('return window.top == window')) | 77 self.assertTrue(self._driver.ExecuteScript('return window.top == window')) |
67 driver.SwitchToFrame('name') | 78 self._driver.SwitchToFrame('name') |
68 self.assertTrue(driver.ExecuteScript('return window.top != window')) | 79 self.assertTrue(self._driver.ExecuteScript('return window.top != window')) |
69 driver.SwitchToMainFrame() | 80 self._driver.SwitchToMainFrame() |
70 self.assertTrue(driver.ExecuteScript('return window.top == window')) | 81 self.assertTrue(self._driver.ExecuteScript('return window.top == window')) |
71 driver.SwitchToFrameByIndex(0) | 82 self._driver.SwitchToFrameByIndex(0) |
72 self.assertTrue(driver.ExecuteScript('return window.top != window')) | 83 self.assertTrue(self._driver.ExecuteScript('return window.top != window')) |
73 driver.Quit() | 84 |
| 85 def testGetTitle(self): |
| 86 script = 'document.title = "title"; return 1;' |
| 87 self.assertEquals(1, self._driver.ExecuteScript(script)) |
| 88 self.assertEqual('title', self._driver.GetTitle()) |
74 | 89 |
75 | 90 |
76 if __name__ == '__main__': | 91 if __name__ == '__main__': |
77 parser = optparse.OptionParser() | 92 parser = optparse.OptionParser() |
78 parser.add_option( | 93 parser.add_option( |
79 '', '--chromedriver', type='string', default=None, | 94 '', '--chromedriver', type='string', default=None, |
80 help='Path to a build of the chromedriver library(REQUIRED!)') | 95 help='Path to a build of the chromedriver library(REQUIRED!)') |
81 parser.add_option( | 96 parser.add_option( |
82 '', '--chrome', type='string', default=None, | 97 '', '--chrome', type='string', default=None, |
83 help='Path to a build of the chrome binary') | 98 help='Path to a build of the chrome binary') |
(...skipping 13 matching lines...) Expand all Loading... |
97 if options.chrome is not None: | 112 if options.chrome is not None: |
98 _CHROME_BINARY = os.path.abspath(options.chrome) | 113 _CHROME_BINARY = os.path.abspath(options.chrome) |
99 else: | 114 else: |
100 _CHROME_BINARY = None | 115 _CHROME_BINARY = None |
101 | 116 |
102 all_tests_suite = unittest.defaultTestLoader.loadTestsFromModule( | 117 all_tests_suite = unittest.defaultTestLoader.loadTestsFromModule( |
103 sys.modules[__name__]) | 118 sys.modules[__name__]) |
104 tests = unittest_util.FilterTestSuite(all_tests_suite, options.filter) | 119 tests = unittest_util.FilterTestSuite(all_tests_suite, options.filter) |
105 result = unittest.TextTestRunner().run(tests) | 120 result = unittest.TextTestRunner().run(tests) |
106 sys.exit(len(result.failures) + len(result.errors)) | 121 sys.exit(len(result.failures) + len(result.errors)) |
OLD | NEW |