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

Unified Diff: chrome/test/webdriver/webdriver_remote_tests.py

Issue 7331004: Move chromedriver tests to test subdirectory. Add script to run all chromedriver (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 5 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 side-by-side diff with in-line comments
Download patch
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()
« chrome/test/webdriver/test/run_chromedriver_tests.py ('K') | « chrome/test/webdriver/upload.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698