Index: chrome/test/webdriver/webdriver_remote_tests.py |
diff --git a/chrome/test/webdriver/webdriver_remote_tests.py b/chrome/test/webdriver/webdriver_remote_tests.py |
deleted file mode 100644 |
index c5d00f2635be320419fb271a33c9bf9f59afe68d..0000000000000000000000000000000000000000 |
--- a/chrome/test/webdriver/webdriver_remote_tests.py |
+++ /dev/null |
@@ -1,301 +0,0 @@ |
-#!/usr/bin/python |
dennis_jeffrey
2011/07/08 01:26:40
This file seems to have been deleted, not moved.
kkania
2011/07/08 01:30:21
Sorry, should have included this as one of the exc
|
-# Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-try: |
- import json |
-except ImportError: # < 2.6 |
- import simplejson as json |
- |
-import os |
-import optparse |
-import platform |
-import string |
-import subprocess |
-import sys |
-import time |
-import types |
-import unittest |
-import urllib2 |
-from selenium.common.exceptions import ErrorInResponseException |
-from selenium.common.exceptions import NoSuchElementException |
-from selenium.remote.webdriver import WebDriver |
-from selenium.remote.webdriver.webelement import WebElement |
-from urlparse import urlparse |
- |
- |
-if sys.version_info < (2,6): |
- # Subprocess.Popen.kill is not available prior to 2.6. |
- if platform.system() == 'Windows': |
- import win32api |
- else: |
- import signal |
- |
- |
-WEBDRIVER_EXE = os.path.abspath(os.path.join('.', 'chromedriver')) |
-if platform.system() == 'Windows': |
- WEBDRIVER_EXE = '%s.exe' % WEBDRIVER_EXE |
-WEBDRIVER_PORT = 8080 |
-WEBDRIVER_SERVER_URL = None |
-WEBDRIVER_PROCESS = None |
- |
-if not WEBDRIVER_SERVER_URL: |
- WEBDRIVER_SERVER_URL = 'http://localhost:%d' % WEBDRIVER_PORT |
- |
-class RemoteWebDriverTest(unittest.TestCase): |
- SEARCH = "http://www.google.com/webhp?hl=en" |
- NEWS = "http://www.google.com/news?hl=en" |
- |
- """Verifies that navigation to a specific page is correct by asserting on the |
- the reported URL. The function will not work with pages that redirect.""" |
- def navigate(self, url): |
- self.driver.get(url) |
- self.assertURL(url) |
- |
- def assertURL(self, url): |
- u = self.driver.get_current_url() |
- self.assertEqual(u, url) |
- |
- """A new instance of chrome driver is started for every test case""" |
- def setUp(self): |
- global WEBDRIVER_SERVER_URL |
- global WEBDRIVER_PROCESS |
- WEBDRIVER_PROCESS = subprocess.Popen([WEBDRIVER_EXE, |
- '--port=%d' % WEBDRIVER_PORT]) |
- if WEBDRIVER_PROCESS == None: |
- print "Chromium executable not found. The path used was: " |
- print WEBDRIVER_EXE |
- sys.exit(-1) |
- |
- time.sleep(5) |
- self.driver = WebDriver.WebDriver(WEBDRIVER_SERVER_URL, "chrome", "ANY") |
- self.assertTrue(self.driver) |
- |
- def tearDown(self): |
- global WEBDRIVER_PROCESS |
- self.driver.quit() |
- if WEBDRIVER_PROCESS: |
- if sys.version_info < (2,6): |
- # From http://stackoverflow.com/questions/1064335 |
- if platform.system() == 'Windows': |
- PROCESS_TERMINATE = 1 |
- handle = win32api.OpenProcess(PROCESS_TERMINATE, False, |
- WEBDRIVER_PROCESS.pid) |
- win32api.TerminateProcess(handle, -1) |
- win32api.CloseHandle(handle) |
- else: |
- os.kill(WEBDRIVER_PROCESS.pid, signal.SIGKILL) |
- else: |
- WEBDRIVER_PROCESS.kill() |
- WEBDRIVER_PROCESS = None |
- |
- """Preforms a string search ignoring case""" |
- def assertFind(self, text, search): |
- text = string.lower(text) |
- search = string.lower(search) |
- self.assertNotEqual(-1, string.find(text, search)) |
- |
- |
-class TestFindElement(RemoteWebDriverTest): |
- def testFindByName(self): |
- self.navigate(SEARCH) |
- # Find the Google search button. |
- q = self.driver.find_element_by_name("q") |
- self.assertTrue(isinstance(q, WebElement)) |
- # Trying looking for an element not on the page. |
- self.assertRaises(NoSuchElementException, |
- self.driver.find_elment_by_name, "q2") |
- # Try to find the Google search button using the multiple find method. |
- q = self.driver.find_elements_by_name("q") |
- self.assertTrue(isinstance(q, list)) |
- self.assertTrue(len(q), 1) |
- self.assertTrue(isinstance(q[0], WebElement)) |
- # Try finding something not on page, with multiple find an empty array |
- # should return and no exception thrown. |
- q = self.driver.find_elements_by_name("q2") |
- assertTrue(q == []) |
- # Find a hidden element on the page |
- q = self.driver.find_element_by_name("oq") |
- self.assertTrue(isinstance(q, WebElement)) |
- |
- def testFindElementById(self): |
- self.navigate(SEARCH) |
- # Find the padding for the logo near the search bar. |
- elem = self.driver.find_element_by_id("logocont") |
- self.assertTrue(isinstance(elem, WebElement)) |
- # Look for an ID not there. |
- self.assertRaises(NoSuchElementException, |
- self.driver.find_element_by_id, "logocont") |
- |
- def testFindElementById0WithTimeout(self): |
- self.set_implicit_wait(0) |
- self.navigate(SEARCH) |
- # Find the padding for the logo near the search bar. |
- elem = self.driver.find_element_by_id("logocont") |
- self.assertTrue(isinstance(elem, WebElement)) |
- self.set_implicit_wait(5000) |
- self.navigate(SEARCH) |
- # Look for an ID not there. |
- self.assertRaises(NoSuchElementException, |
- self.driver.find_element_by_id, "logocont") |
- |
- |
-class TestFindElement(RemoteWebDriverTest): |
- def testFindByName(self): |
- self.navigate(SEARCH) |
- # Find the Google search button. |
- q = self.driver.find_element_by_name("q") |
- self.assertTrue(isinstance(q, WebElement)) |
- # Trying looking for an element not on the page. |
- self.assertRaises(NoSuchElementException, |
- self.driver.find_elment_by_name, "q2") |
- # Try to find the Google search button using the multiple find method. |
- q = self.driver.find_elements_by_name("q") |
- self.assertTrue(isinstance(q, list)) |
- self.assertTrue(len(q), 1) |
- self.assertTrue(isinstance(q[0], WebElement)) |
- # Try finding something not on page, with multiple find an empty array |
- # should return and no exception thrown. |
- q = self.driver.find_elements_by_name("q2") |
- assertTrue(q == []) |
- # Find a hidden element on the page |
- q = self.driver.find_element_by_name("oq") |
- self.assertTrue(isinstance(q, WebElement)) |
- |
- def testFindElementById(self): |
- self.navigate(SEARCH) |
- # Find the padding for the logo near the search bar. |
- elem = self.driver.find_element_by_id("logocont") |
- self.assertTrue(isinstance(elem, WebElement)) |
- # Look for an ID not there. |
- self.assertRaises(NoSuchElementException, |
- self.driver.find_element_by_id, "logocont") |
- |
- |
-class TestJavaScriptExecution(RemoteWebDriverTest): |
- """ Test the execute javascript ability of the remote driver""" |
- def testNoModification(self): |
- self.driver.get("http://www.google.com") |
- title = self.driver.execute_script("return document.title") |
- self.assertEqual(title, self.driver.get_title()) |
- |
- def testModification(self): |
- self.driver.get("http://www.google.com") |
- title = self.driver.get_title() |
- self.assertFind(title, "google") |
- r = self.driver.execute_script("return document.Foo") |
- self.assertTrue(r == None) |
- self.driver.execute_script("document.Foo = \"Hello\"") |
- r = self.driver.execute_script("return document.Foo") |
- self.assertTrue(r == "Hello") |
- |
- def testComplexObjectFetch(self): |
- self.driver.get("http://www.google.com") |
- loc = self.driver.execute_script("return window.location") |
- self.assertTrue(type(loc) is types.DictType) |
- self.assertTrue(loc.has_key("hostname")) |
- self.assertFind(loc["hostname"], "google") |
- |
- def testJavascriptExeception(self): |
- self.driver.get("http://www.google.com") |
- self.assertRaises(ErrorInResponseException, self.driver.execute_script, |
- "return windows"); |
- |
- def testJavascriptWithNoReturn(self): |
- self.driver.get("http://www.google.com") |
- try: |
- ret = self.driver.execute_script("return window.foobar") |
- self.assertTrue(type(ret) is types.NoneType) |
- except: |
- self.assertTrue(False) |
- |
- |
-class TestNavigation(RemoteWebDriverTest): |
- def testNavigateToURL(self): |
- # No redirects are allowed on the google home page. |
- self.navigate(self.SEARCH) |
- |
- def testGoBackWithNoHistory(self): |
- # Go back one page with nothing to go back to. |
- self.assertRaises(ErrorInResponseException, self.driver.back) |
- |
- def testGoForwardWithNoHistory(self): |
- # Go forward with nothing to move forward to. |
- self.assertRaises(ErrorInResponseException, self.driver.forward) |
- |
- def testNavigation(self): |
- # Loads two pages into chrome's navigation history. |
- self.navigate(self.NEWS) |
- self.navigate(self.SEARCH) |
- |
- # Go back to news. |
- self.driver.back() |
- self.assertURL(self.NEWS) |
- |
- # Move forward to search. |
- self.driver.forward() |
- self.assertURL(self.SEARCH) |
- |
- # Verify refresh keeps us on the current page. |
- self.driver.refresh() |
- self.assertURL(self.SEARCH) |
- |
- # Go back to the previous URL and refresh making sure |
- # we dont change the page. |
- self.driver.back() |
- self.assertURL(self.NEWS) |
- self.driver.refresh() |
- self.assertURL(self.NEWS) |
- |
- def testGetTitle(self): |
- self.navigate(self.SEARCH) |
- title = self.driver.get_title() |
- # The google name must always be in the search title. |
- self.assertFind(title, u"google") |
- |
- def testGetSource(self): |
- self.navigate(self.SEARCH) |
- source = self.driver.get_page_source() |
- self.assertFind(source, u"document.body.style") # Basic javascript. |
- self.assertFind(source, u"feeling lucky") # Lucky button. |
- self.assertFind(source, u"google search") # Searh button. |
- |
- |
-if __name__ == '__main__': |
- parser = optparse.OptionParser('%prog [options]') |
- parser.add_option('-u', '--url', dest='url', action='store', |
- type='string', default=None, |
- help=('Specifies the URL of a remote WebDriver server to ' |
- 'test against. If not specified, a server will be ' |
- 'started on localhost according to the --exe and ' |
- '--port flags')) |
- parser.add_option('-e', '--exe', dest='exe', action='store', |
- type='string', default=None, |
- help=('Path to the WebDriver server executable that should ' |
- 'be started for testing; This flag is ignored if ' |
- '--url is provided for a remote server.')) |
- parser.add_option('-p', '--port', dest='port', action='store', |
- type='int', default=8080, |
- help=('The port to start the WebDriver server executable ' |
- 'on; This flag is ignored if --url is provided for a ' |
- 'remote server.')) |
- |
- (options, args) = parser.parse_args() |
- # Strip out our flags so unittest.main() correct parses the remaining. |
- sys.argv = sys.argv[:1] |
- sys.argv.extend(args) |
- |
- if options.url: |
- WEBDRIVER_SERVER_URL = options.url |
- else: |
- if options.port: |
- WEBDRIVER_PORT = options.port |
- if options.exe: |
- WEBDRIVER_EXE = options.exe |
- if not os.path.exists(WEBDRIVER_EXE): |
- parser.error('WebDriver server executable not found:\n\t%s\n' |
- 'Please specify a valid path with the --exe flag.' |
- % WEBDRIVER_EXE) |
- |
- unittest.main() |