WebDriver/Test suite
To test WebDriver, we're going to need a bunch of tests. This page lists some of the tests that must be written.
Our tests are in the web-platform-tests repository:
https://github.com/w3c/web-platform-tests
To get started with contributing, see the Test the Web Forward documentation:
http://testthewebforward.org/docs/github-101.html
We have a bunch of tests in the open source project, found here:
https://code.google.com/p/selenium/source/browse/java/client/test/org/openqa/selenium/
Many of these tests should be rewritten and included in our official test suite.
Helpful links
- The WebDriver spec describes the underlying API, but not the Python language bindings used in the test suite. The latter is documented here: http://selenium.googlecode.com/git/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html - Note that the Python language bindings also contain functionality _not_ covered by the spec.
Import Dependencies
Command | Documentation |
---|---|
import unittest | http://docs.python.org/2/library/unittest.html |
import os | http://docs.python.org/2/library/os.html |
import sys | http://docs.python.org/2/library/sys.html |
This list is inspired by: https://code.google.com/p/selenium/source/browse/java/client/test/org/openqa/selenium/PageLoadingTest.java
See https://dvcs.w3.org/hg/webdriver/raw-file/tip/webdriver-spec.html#navigation-commands for the webdriver APIs under test.
Python bindings for the webdriver interfaces used in the tests include those described at:
- http://selenium.googlecode.com/git/docs/api/py/webdriver_remote/selenium.webdriver.remote.webelement.html
- http://selenium.googlecode.com/git/docs/api/py/webdriver_remote/selenium.webdriver.remote.webdriver.html
get
- Pages from different HTTP domains should load
- Pages from different HTTPS domains should load
- DIFFICULT: Test should be loaded before the next command is executed
- DIFFICULT: Test should follow redirects sent in HTTP response headers
- Test should follow redirects from meta refresh
- Test should return when getting URL that does not resolve
- Test should return when getting URL that does not connect
- Test should return when getting a non-existent page (404)
- DIFFICULT: Test should be able to load a page with a frameset, and wait until all frames are loaded before returning
- DIFFICULT: Test should be able to access pages with an insecure SSL certificate
- Test should not hang if document open call is never followed by document close call (document.write and friends)
- Test should not wait indefinitely if an external resource fails to load
back
- Test should be able to go back in browser history
- When going back, test should do nothing if there is nothing go to back to
- Test should be able to navigate back in browser history, even if page contains iframes
forward
- Test should be able to go forward in browser history (DONE)
- When going forward, test should do nothing if there is nothing go to forward to (DONE)
refresh
- Test should be able to refresh a page (DONE)
User input
click
- Test should be able to click a link to follow it
- When clicking an anchor link, scroll position should change, but the page should not reload
- Test should be able to click a link that updates another frame
- (…)
Elements
- The same element looked up different ways should be equal
- Two different elements should not be equal
- The same element looked up in different ways should have the same ID
- The same element looked up with find_element and JS should have the same ID
- (…)
Attributes
- Test should return null when getting the value of an attribute that is not listed
- Test should return null when getting @src of an invalid <img>
- Test should return an absolute URL when getting @src of a valid <img>
- Test should return an absolute URL when getting @href of a valid <a>