diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index fd7aace016b..3222090ad1d 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -11437,6 +11437,10 @@ "path": "IndexedDB/idbobjectstore_openCursor_invalid.htm", "url": "/IndexedDB/idbobjectstore_openCursor_invalid.htm" }, + { + "path": "IndexedDB/idbobjectstore_openKeyCursor.htm", + "url": "/IndexedDB/idbobjectstore_openKeyCursor.htm" + }, { "path": "IndexedDB/idbobjectstore_put.htm", "url": "/IndexedDB/idbobjectstore_put.htm" @@ -29747,6 +29751,9 @@ { "path": "webdriver/element_state/method_test.py" }, + { + "path": "webdriver/element_state/properties.py" + }, { "path": "webdriver/element_state/visibility_test.py" }, @@ -29777,6 +29784,12 @@ { "path": "webdriver/navigation/refresh-page.py" }, + { + "path": "webdriver/navigation/refresh_page.py" + }, + { + "path": "webdriver/screenshot/take_screenshot.py" + }, { "path": "webdriver/timeouts/implicit_waits_tests.py" }, @@ -29785,6 +29798,12 @@ }, { "path": "webdriver/user_input/clear_test.py" + }, + { + "path": "webdriver/windows/tabbing.py" + }, + { + "path": "webdriver/windows/window_manipulation.py" } ] }, @@ -35327,7 +35346,7 @@ } ] }, - "rev": "4b25d322ac6ed466f992669e5408b15d37d56436", + "rev": "7123012427f92f0dc38a120e6e86a75b6c03aab5", "url_base": "/", "version": 2 } \ No newline at end of file diff --git a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html.ini b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html.ini index 1df7bd3dc0b..b56a9490e9a 100644 --- a/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html.ini @@ -6,3 +6,9 @@ [The SecurityError must be thrown if the container's document does not have the same effective script origin] expected: FAIL + [The SecurityError must be thrown if the window accesses to frameElement attribute of a Window which does not have the same effective script origin] + expected: FAIL + + [The window's frameElement attribute must return null if the container's document does not have the same effective script origin] + expected: FAIL + diff --git a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini index f858a12d101..dd109c994dd 100644 --- a/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini +++ b/tests/wpt/metadata/html/semantics/forms/the-select-element/select-ask-for-reset.html.ini @@ -2,3 +2,4 @@ type: testharness [ask for reset on node remove, non multiple.] expected: FAIL + diff --git a/tests/wpt/metadata/mozilla-sync b/tests/wpt/metadata/mozilla-sync index c30d6257fc1..296a35e4d67 100644 --- a/tests/wpt/metadata/mozilla-sync +++ b/tests/wpt/metadata/mozilla-sync @@ -1 +1 @@ -7574a8ec72e121613cb56f2af746f858c02b7181 \ No newline at end of file +521a87180a85709f8f704df33537f79bd131bf71 \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/.gitignore b/tests/wpt/web-platform-tests/.gitignore index 72908a311d8..7728bbdc3c4 100644 --- a/tests/wpt/web-platform-tests/.gitignore +++ b/tests/wpt/web-platform-tests/.gitignore @@ -9,3 +9,4 @@ config.json node_modules scratch testharness_runner.html +webdriver/.idea diff --git a/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_openKeyCursor.htm b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_openKeyCursor.htm new file mode 100644 index 00000000000..9dc547c3ff9 --- /dev/null +++ b/tests/wpt/web-platform-tests/IndexedDB/idbobjectstore_openKeyCursor.htm @@ -0,0 +1,139 @@ + +IDBObjectStore.openKeyCursor() + + + diff --git a/tests/wpt/web-platform-tests/IndexedDB/support.js b/tests/wpt/web-platform-tests/IndexedDB/support.js index 2eeca4f1f53..1e8458fee96 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/support.js +++ b/tests/wpt/web-platform-tests/IndexedDB/support.js @@ -1,29 +1,6 @@ var databaseName = "database"; var databaseVersion = 1; -if (!window.indexedDB) -{ - if (window.msIndexedDB) - { - window.indexedDB = window.msIndexedDB; - } - else if (window.mozIndexedDB) - { - window.indexedDB = window.mozIndexedDB; - } - else if (window.webkitIndexedDB) - { - window.indexedDB = webkitIndexedDB; - IDBCursor = webkitIDBCursor; - IDBDatabaseException = webkitIDBDatabaseException; - IDBIndex = webkitIDBIndex; - IDBObjectStore = webkitIDBObjectStore; - IDBRequest = webkitIDBRequest; - IDBKeyRange = webkitIDBKeyRange; - IDBTransaction = webkitIDBTransaction; - } -} - /* Delete created databases * * Go through each finished test, see if it has an associated database. Close diff --git a/tests/wpt/web-platform-tests/README.md b/tests/wpt/web-platform-tests/README.md index 8157a4a841c..cac36bc2f37 100644 --- a/tests/wpt/web-platform-tests/README.md +++ b/tests/wpt/web-platform-tests/README.md @@ -2,8 +2,10 @@ The Web Platform Tests Project [![IRC chat](https://goo.gl/6nCIks)](http://irc.w ============================== The Web Platform Tests Project is a W3C-coordinated attempt to build a -cross-browser testsuite for the Web-platform stack. Writing tests in a -way that allows them to be run in all browsers gives browser projects +cross-browser testsuite for the Web-platform stack. However, for mainly +historic reasons, the CSS WG testsuite is in a separate repository, +[csswg-test](https://github.com/w3c/csswg-test). Writing tests in a way +that allows them to be run in all browsers gives browser projects confidence that they are shipping software that is compatible with other implementations, and that later implementations will be compatible with their implementations. This in turn gives Web authors/developers diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html index 14582670b22..8a064c70172 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html +++ b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html @@ -6,37 +6,68 @@ scripthash-unicode-normalization - - - - + + +

This tests Unicode normalization. While appearing the same, the strings in the scripts are different Unicode points, but through normalization, should be the same when the hash is taken.

- + diff --git a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers index 6281a262386..a23724f8ab4 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers +++ b/tests/wpt/web-platform-tests/content-security-policy/blink-contrib-2/scripthash-unicode-normalization.sub.html.sub.headers @@ -3,4 +3,4 @@ Cache-Control: no-store, no-cache, must-revalidate Cache-Control: post-check=0, pre-check=0, false Pragma: no-cache Set-Cookie: scripthash-unicode-normalization={{$id:uuid()}}; Path=/content-security-policy/blink-contrib-2 -Content-Security-Policy: script-src 'self' 'sha256-xy4iRAvdlFCq+M5+4yu4B7dy0Kc2FfljmZO4Jkj3Yhw='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} +Content-Security-Policy: script-src 'self' 'nonce-nonceynonce' 'sha256-9UFeeZbvnMa0tLNu76v96T4Hh+UtDWHm2lPQJoTWb9c='; connect-src 'self'; report-uri /content-security-policy/support/report.py?op=put&reportID={{$id}} diff --git a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html b/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html index ffc4a2c0d16..0ee6783b4b4 100644 --- a/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html +++ b/tests/wpt/web-platform-tests/html/browsers/windows/nested-browsing-contexts/frameElement.sub.html @@ -7,7 +7,8 @@
- + + + diff --git a/tests/wpt/web-platform-tests/resources/testharness.js b/tests/wpt/web-platform-tests/resources/testharness.js index 4e203c4863a..7920ccd4e80 100644 --- a/tests/wpt/web-platform-tests/resources/testharness.js +++ b/tests/wpt/web-platform-tests/resources/testharness.js @@ -1176,6 +1176,7 @@ policies and contribution forms [3]. NO_MODIFICATION_ALLOWED_ERR: 'NoModificationAllowedError', NOT_FOUND_ERR: 'NotFoundError', NOT_SUPPORTED_ERR: 'NotSupportedError', + INUSE_ATTRIBUTE_ERR: 'InUseAttributeError', INVALID_STATE_ERR: 'InvalidStateError', SYNTAX_ERR: 'SyntaxError', INVALID_MODIFICATION_ERR: 'InvalidModificationError', @@ -1202,6 +1203,7 @@ policies and contribution forms [3]. NoModificationAllowedError: 7, NotFoundError: 8, NotSupportedError: 9, + InUseAttributeError: 10, InvalidStateError: 11, SyntaxError: 12, InvalidModificationError: 13, diff --git a/tests/wpt/web-platform-tests/webdriver/base_test.py b/tests/wpt/web-platform-tests/webdriver/base_test.py index 9fe6b6ef3f0..851099936d2 100644 --- a/tests/wpt/web-platform-tests/webdriver/base_test.py +++ b/tests/wpt/web-platform-tests/webdriver/base_test.py @@ -10,7 +10,7 @@ repo_root = os.path.abspath(os.path.join(__file__, "../..")) sys.path.insert(1, os.path.join(repo_root, "tools", "webdriver")) sys.path.insert(1, os.path.join(repo_root, "tools", "wptserve")) from wptserve import server -from webdriver.driver import WebDriver +from selenium import webdriver class WebDriverBaseTest(unittest.TestCase): @@ -33,9 +33,10 @@ def create_driver(): config = ConfigParser.ConfigParser() config.read('webdriver.cfg') section = os.environ.get("WD_BROWSER", 'firefox') - url = 'http://127.0.0.1:4444/wd/hub' if config.has_option(section, 'url'): url = config.get(section, "url") + else: + url = 'http://127.0.0.1:4444/wd/hub' capabilities = None if config.has_option(section, 'capabilities'): try: @@ -45,5 +46,15 @@ def create_driver(): mode = 'compatibility' if config.has_option(section, 'mode'): mode = config.get(section, 'mode') + if section == 'firefox': + driver = webdriver.Firefox() + elif section == 'chrome': + driver = webdriver.Chrome() + elif section == 'edge': + driver = webdriver.Remote() + elif section == 'ie': + driver = webdriver.Ie() + elif section == 'selendroid': + driver = webdriver.Android() - return WebDriver(url, {}, capabilities, mode) + return driver diff --git a/tests/wpt/web-platform-tests/webdriver/cookie/cookie_test.py b/tests/wpt/web-platform-tests/webdriver/cookie/cookie_test.py index e4211cbb946..e57d4671308 100644 --- a/tests/wpt/web-platform-tests/webdriver/cookie/cookie_test.py +++ b/tests/wpt/web-platform-tests/webdriver/cookie/cookie_test.py @@ -4,7 +4,7 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions +from selenium.common import exceptions class CookieTest(base_test.WebDriverBaseTest): @@ -12,20 +12,14 @@ class CookieTest(base_test.WebDriverBaseTest): self.driver.get(self.webserver.where_is("cookie/res/cookie_container.html")) def test_can_create_a_well_formed_cookie( self ): - name = 'foo' - value = 'bar' - - self.driver.add_cookie({ 'name': name, 'value': value }) + self.driver.add_cookie({'name': 'foo', 'value': 'bar'}) def test_cookies_should_allow_secure_to_be_set( self ): name = 'foo' - value = 'bar' - secure = True - - self.driver.add_cookie({ 'name': name, - 'value': value, - 'path': '/', - 'secure': secure}) + self.driver.add_cookie({'name': name, + 'value': 'bar', + 'path': '/', + 'secure': (True)}) self.assertTrue(self.driver.get_cookie(name)[0]['secure']) def test_secure_defaults_to_false( self ): @@ -39,10 +33,8 @@ class CookieTest(base_test.WebDriverBaseTest): def test_should_throw_an_exception_when_semicolon_exists_in_the_cookie_attribute(self): invalid_name = 'foo;bar' - value = 'foobar' - try: - self.driver.add_cookie({ 'name': invalid_name, 'value': value }) + self.driver.add_cookie({'name': invalid_name, 'value': 'foobar'}) self.fail( 'should have thrown exceptions.' ) except exceptions.UnableToSetCookieException: @@ -51,10 +43,8 @@ class CookieTest(base_test.WebDriverBaseTest): pass def test_should_throw_an_exception_the_name_is_null(self): - val = 'foobar' - try: - self.driver.add_cookie({ 'name': None, 'value': val }) + self.driver.add_cookie({'name': None, 'value': 'foobar'}) self.fail( 'should have thrown exceptions.' ) except exceptions.UnableToSetCookieException: diff --git a/tests/wpt/web-platform-tests/webdriver/element_location/element_location_test.py b/tests/wpt/web-platform-tests/webdriver/element_location/element_location_test.py index acbc56d7ee4..aff548ea5e4 100644 --- a/tests/wpt/web-platform-tests/webdriver/element_location/element_location_test.py +++ b/tests/wpt/web-platform-tests/webdriver/element_location/element_location_test.py @@ -5,16 +5,15 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test - class ElementLocationTest(base_test.WebDriverBaseTest): def test_find_element_by_name(self): self.driver.get(self.webserver.where_is("element_location/res/elements.html")) - e = self.driver.find_element_by_css("*[name='name']") + e = self.driver.find_element_by_name("name") self.assertEquals("name", e.text) def test_find_element_by_css_selector(self): self.driver.get(self.webserver.where_is("element_location/res/elements.html")) - e = self.driver.find_element_by_css("#id") + e = self.driver.find_element_by_css_selector("#id") self.assertEquals("id", e.text) def test_find_element_by_link_text(self): @@ -32,6 +31,30 @@ class ElementLocationTest(base_test.WebDriverBaseTest): e = self.driver.find_element_by_xpath("//*[@id='id']") self.assertEquals("id", e.text) + def test_find_elements_by_name(self): + self.driver.get(self.webserver.where_is("element_location/res/elements.html")) + e = self.driver.find_elements_by_name("name") + self.assertEquals("name", e[0].text) + + def test_find_elements_by_css_selector(self): + self.driver.get(self.webserver.where_is("element_location/res/elements.html")) + e = self.driver.find_elements_by_css_selector("#id") + self.assertEquals("id", e[0].text) + + def test_find_elements_by_link_text(self): + self.driver.get(self.webserver.where_is("element_location/res/elements.html")) + e = self.driver.find_elements_by_link_text("link text") + self.assertEquals("link text", e[0].text) + + def test_find_elements_by_partial_link_text(self): + self.driver.get(self.webserver.where_is("element_location/res/elements.html")) + e = self.driver.find_elements_by_partial_link_text("link tex") + self.assertEquals("link text", e[0].text) + + def test_find_elements_by_xpath(self): + self.driver.get(self.webserver.where_is("element_location/res/elements.html")) + e = self.driver.find_elements_by_xpath("//*[@id='id']") + self.assertEquals("id", e[0].text) if __name__ == "__main__": unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/element_state/method_test.py b/tests/wpt/web-platform-tests/webdriver/element_state/method_test.py index e357471a0c2..dacd81b6ae0 100644 --- a/tests/wpt/web-platform-tests/webdriver/element_state/method_test.py +++ b/tests/wpt/web-platform-tests/webdriver/element_state/method_test.py @@ -9,12 +9,12 @@ import base_test class GetElementAttributeTest(base_test.WebDriverBaseTest): def test_get_element_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/element-with-id-attribute.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertEqual("myId", el.get_attribute("id")) def test_style_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/element-with-style-attribute.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") expected_style = """ font-family: \"Gill Sans Extrabold\",Helvetica,sans-serif; line-height: 1.2; font-weight: bold; @@ -23,47 +23,47 @@ class GetElementAttributeTest(base_test.WebDriverBaseTest): def test_color_serialization_of_style_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/element-with-color-style-attribute.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertEqual("color: rgba(255, 0, 0, 1.0);", el.get_attribute("style")) def test_true_if_boolean_attribute_present(self): self.driver.get(self.webserver.where_is("element_state/res/input-with-checked-attribute.html")) - el = self.driver.find_element_by_css("input") + el = self.driver.find_element_by_css_selector("input") self.assertEqual("true", el.get_attribute("checked")) def test_none_if_boolean_attribute_absent(self): self.driver.get(self.webserver.where_is("element_state/res/input-without-checked-attribute.html")) - el = self.driver.find_element_by_css("input") + el = self.driver.find_element_by_css_selector("input") self.assertIsNone(el.get_attribute("checked")) def test_option_with_attribute_value(self): self.driver.get(self.webserver.where_is("element_state/res/option-with-value-attribute.html")) - el = self.driver.find_element_by_css("option") + el = self.driver.find_element_by_css_selector("option") self.assertEqual("value1", el.get_attribute("value")) def test_option_without_value_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/option-without-value-attribute.html")) - el = self.driver.find_element_by_css("option") + el = self.driver.find_element_by_css_selector("option") self.assertEqual("Value 1", el.get_attribute("value")) def test_a_href_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/a-with-href-attribute.html")) - el = self.driver.find_element_by_css("a") + el = self.driver.find_element_by_css_selector("a") self.assertEqual("http://web-platform.test:8000/path#fragment", el.get_attribute("href")) def test_img_src_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/img-with-src-attribute.html")) - el = self.driver.find_element_by_css("img") + el = self.driver.find_element_by_css_selector("img") self.assertEqual("http://web-platform.test:8000/images/blue.png", el.get_attribute("src")) def test_custom_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/element-with-custom-attribute.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertEqual("attribute value", el.get_attribute("webdriver-custom-attribute")) def test_attribute_not_present(self): self.driver.get(self.webserver.where_is("element_state/res/element-without-attribute.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertIsNone(el.get_attribute("class")) diff --git a/tests/wpt/web-platform-tests/webdriver/element_state/properties.py b/tests/wpt/web-platform-tests/webdriver/element_state/properties.py new file mode 100644 index 00000000000..a767700852e --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/element_state/properties.py @@ -0,0 +1,17 @@ +import os +import sys +import unittest + +sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) +import base_test + + +class GetElementPropertiesTest(base_test.WebDriverBaseTest): + def test_get_element_text(self): + self.driver.get(self.webserver.where_is("element_state/res/elements_text.html")) + e = self.driver.find_element_by_name("name") + self.assertEquals("name", e.text) + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/element_state/res/elements_text.html b/tests/wpt/web-platform-tests/webdriver/element_state/res/elements_text.html new file mode 100644 index 00000000000..45b7c237012 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/element_state/res/elements_text.html @@ -0,0 +1,10 @@ + + + +Element location + + +
id
+
name
+ link text + diff --git a/tests/wpt/web-platform-tests/webdriver/element_state/visibility_test.py b/tests/wpt/web-platform-tests/webdriver/element_state/visibility_test.py index 02efadb0aca..58218a7ff2e 100644 --- a/tests/wpt/web-platform-tests/webdriver/element_state/visibility_test.py +++ b/tests/wpt/web-platform-tests/webdriver/element_state/visibility_test.py @@ -4,41 +4,41 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions +from selenium.common import exceptions class NaturalNonVisibleElementsTest(base_test.WebDriverBaseTest): def test_0x0_pixel_element_is_not_visible(self): self.driver.get(self.webserver.where_is("element_state/res/0x0-pixels.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertFalse(el.is_displayed()) def test_0x0_pixel_text_node_is_visible(self): self.driver.get(self.webserver.where_is("element_state/res/0x0-pixels-text-node.html")) - el = self.driver.find_element_by_css("p") + el = self.driver.find_element_by_css_selector("p") self.assertTrue(el.is_displayed()) def test_1x1_pixel_element(self): self.driver.get(self.webserver.where_is("element_state/res/1x1-pixels.html")) - el = self.driver.find_element_by_css("p") + el = self.driver.find_element_by_css_selector("p") self.assertTrue(el.is_displayed()) def test_zero_sized_element_is_shown_if_decendant_has_size(self): self.driver.get(self.webserver.where_is("element_state/res/zero-sized-element-with-sizable-decendant.html")) - parent = self.driver.find_element_by_css("#parent") - child = self.driver.find_element_by_css("#child") + parent = self.driver.find_element_by_css_selector("#parent") + child = self.driver.find_element_by_css_selector("#child") self.assertTrue(parent.is_displayed()) self.assertTrue(child.is_displayed()) def test_input_type_hidden_is_never_visible(self): self.driver.get(self.webserver.where_is("element_state/res/input-type-hidden.html")) - input = self.driver.find_element_by_css("input") + input = self.driver.find_element_by_css_selector("input") self.assertFalse(input.is_displayed()) def test_input_morphs_into_hidden(self): self.driver.get(self.webserver.where_is("element_state/res/input-morphs-into-hidden.html")) - input = self.driver.find_element_by_css("input") + input = self.driver.find_element_by_css_selector("input") self.assertFalse(input.is_displayed()) def test_parent_node_visible_when_all_children_are_absolutely_positioned_and_overflow_is_hidden(self): @@ -51,10 +51,10 @@ class NaturalNonVisibleElementsTest(base_test.WebDriverBaseTest): self.driver.get(self.webserver.where_is("element_state/res/absolute-children-ancestor-hidden-overflow.html")) - children = self.driver.find_elements_by_css(".child") + children = self.driver.find_elements_by_css_selector(".child") assert all(child.is_displayed() for child in children) - parent = self.driver.find_element_by_css("#parent") + parent = self.driver.find_element_by_css_selector("#parent") assert parent.is_displayed() def test_element_hidden_by_overflow_x_is_not_visible(self): @@ -66,8 +66,8 @@ class NaturalNonVisibleElementsTest(base_test.WebDriverBaseTest): for page in pages: self.driver.get(self.webserver.where_is(page)) - right = self.driver.find_element_by_css("#right") - bottom_right = self.driver.find_element_by_css("#bottom-right") + right = self.driver.find_element_by_css_selector("#right") + bottom_right = self.driver.find_element_by_css_selector("#bottom-right") self.assertFalse(right.is_displayed()) self.assertFalse(bottom_right.is_displayed()) @@ -81,8 +81,8 @@ class NaturalNonVisibleElementsTest(base_test.WebDriverBaseTest): for page in pages: self.driver.get(self.webserver.where_is(page)) - bottom = self.driver.find_element_by_css("#bottom") - bottom_right = self.driver.find_element_by_css("#bottom-right") + bottom = self.driver.find_element_by_css_selector("#bottom") + bottom_right = self.driver.find_element_by_css_selector("#bottom-right") self.assertFalse(bottom.is_displayed()) self.assertFalse(bottom_right.is_displayed()) @@ -104,78 +104,78 @@ class NaturalNonVisibleElementsTest(base_test.WebDriverBaseTest): def test_element_outside_viewport(self): self.driver.get(self.webserver.where_is("element_state/res/element-outside-viewport.html")) - hidden = self.driver.find_element_by_css("div") + hidden = self.driver.find_element_by_css_selector("div") self.assertFalse(hidden.is_displayed()) def test_element_dynamically_moved_outside_viewport(self): self.driver.get(self.webserver.where_is("element_state/res/element-dynamically-moved-outside-viewport.html")) - hidden = self.driver.find_element_by_css("div") + hidden = self.driver.find_element_by_css_selector("div") self.assertFalse(hidden.is_displayed()) def test_element_hidden_by_other_element(self): self.driver.get(self.webserver.where_is("element_state/res/element-hidden-by-other-element.html")) - overlay = self.driver.find_element_by_css("#overlay") - hidden = self.driver.find_element_by_css("#hidden") + overlay = self.driver.find_element_by_css_selector("#overlay") + hidden = self.driver.find_element_by_css_selector("#hidden") self.assertTrue(overlay.is_displayed()) self.assertFalse(hidden.is_displayed()) def test_element_partially_hidden_by_other_element(self): self.driver.get(self.webserver.where_is("element_state/res/element-partially-hidden-by-other-element.html")) - partial = self.driver.find_element_by_css("#partial") + partial = self.driver.find_element_by_css_selector("#partial") self.assertTrue(partial.is_displayed()) def test_element_hidden_by_z_index(self): self.driver.get(self.webserver.where_is("element_state/res/element-hidden-by-z-index.html")) - overlay = self.driver.find_element_by_css("#overlay") - hidden = self.driver.find_element_by_css("#hidden") + overlay = self.driver.find_element_by_css_selector("#overlay") + hidden = self.driver.find_element_by_css_selector("#hidden") self.assertTrue(overlay.is_displayed()) self.assertFalse(hidden.is_displayed()) def test_element_moved_outside_viewport_by_transform(self): self.driver.get(self.webserver.where_is("element_state/res/element-moved-outside-viewport-by-transform.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertFalse(el.is_displayed()) def test_element_moved_behind_other_element_by_transform(self): self.driver.get(self.webserver.where_is("element_state/res/element-moved-behind-other-element-by-transform.html")) - overlay = self.driver.find_element_by_css("#overlay") - hidden = self.driver.find_element_by_css("#hidden") + overlay = self.driver.find_element_by_css_selector("#overlay") + hidden = self.driver.find_element_by_css_selector("#hidden") self.assertTrue(overlay.is_displayed()) self.assertFalse(hidden.is_displayed()) def test_text_with_same_color_as_background(self): self.driver.get(self.webserver.where_is("element_state/res/text-with-same-color-as-background.html")) - p = self.driver.find_element_by_css("p") + p = self.driver.find_element_by_css_selector("p") self.assertFalse(p.is_displayed()) def test_text_with_same_color_as_parent_background(self): self.driver.get(self.webserver.where_is("element_state/res/text-with-same-color-as-parent-background.html")) - p = self.driver.find_element_by_css("p") + p = self.driver.find_element_by_css_selector("p") self.assertFalse(p.is_displayed()) def test_text_with_matching_color_and_background(self): self.driver.get(self.webserver.where_is("element_state/res/text-with-matching-color-and-background.html")) - p = self.driver.find_element_by_css("p") + p = self.driver.find_element_by_css_selector("p") self.assertTrue(p.is_displayed()) def test_element_with_same_color_as_background(self): self.driver.get(self.webserver.where_is("element_state/res/element-with-same-color-as-background.html")) - el = self.driver.find_element_by_css("div") + el = self.driver.find_element_by_css_selector("div") self.assertFalse(el.is_displayed()) def test_element_with_same_color_as_parent_background(self): self.driver.get(self.webserver.where_is("element_state/res/element-with-same-color-as-parent-background.html")) - hidden = self.driver.find_element_by_css("#hidden") + hidden = self.driver.find_element_by_css_selector("#hidden") self.assertFalse(hidden.is_displayed()) class BodyElementIsAlwaysDisplayedTest(base_test.WebDriverBaseTest): def assert_body_is_displayed_on(self, page): self.driver.get(self.webserver.where_is(page)) - body = self.driver.find_element_by_css("body") + body = self.driver.find_element_by_css_selector("body") assert body.is_displayed() def test_implicit(self): @@ -194,86 +194,86 @@ class BodyElementIsAlwaysDisplayedTest(base_test.WebDriverBaseTest): class DisplayTest(base_test.WebDriverBaseTest): def test_display_block(self): self.driver.get(self.webserver.where_is("element_state/res/display-block.html")) - el = self.driver.find_element_by_css("p") + el = self.driver.find_element_by_css_selector("p") self.assertTrue(el.is_displayed()) def test_display_none(self): self.driver.get(self.webserver.where_is("element_state/res/display-none.html")) - el = self.driver.find_element_by_css("p") + el = self.driver.find_element_by_css_selector("p") self.assertFalse(el.is_displayed()) def test_display_none_hides_child_node(self): self.driver.get(self.webserver.where_is("element_state/res/display-none-child.html")) - parent = self.driver.find_element_by_css("#parent") - child = self.driver.find_element_by_css("#child") + parent = self.driver.find_element_by_css_selector("#parent") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(parent.is_displayed()) self.assertFalse(child.is_displayed()) def test_display_none_hides_child_node_link(self): self.driver.get(self.webserver.where_is("element_state/res/display-none-child-link.html")) - child = self.driver.find_element_by_css("#child") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(child.is_displayed()) def test_display_none_hides_child_node_paragraph(self): self.driver.get(self.webserver.where_is("element_state/res/display-none-child-paragraph.html")) - child = self.driver.find_element_by_css("#child") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(child.is_displayed()) def test_display_none_on_parent_takes_presedence(self): self.driver.get(self.webserver.where_is("element_state/res/display-none-parent-presedence.html")) - child = self.driver.find_element_by_css("#child") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(child.is_displayed()) def test_display_none_on_parent_takes_presedence_over_visibility_visible(self): self.driver.get(self.webserver.where_is("element_state/res/display-none-parent-presedence-visibility.html")) - child = self.driver.find_element_by_css("#child") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(child.is_displayed()) def test_display_none_hidden_dynamically(self): self.driver.get(self.webserver.where_is("element_state/res/display-none-dynamic.html")) - hidden = self.driver.find_element_by_css("#hidden") + hidden = self.driver.find_element_by_css_selector("#hidden") self.assertFalse(hidden.is_displayed()) class VisibilityTest(base_test.WebDriverBaseTest): def test_element_state_hidden(self): self.driver.get(self.webserver.where_is("element_state/res/visibility-hidden.html")) - el = self.driver.find_element_by_css("p") + el = self.driver.find_element_by_css_selector("p") self.assertFalse(el.is_displayed()) def test_element_state_visible(self): self.driver.get(self.webserver.where_is("element_state/res/visibility-visible.html")) - el = self.driver.find_element_by_css("p") + el = self.driver.find_element_by_css_selector("p") self.assertTrue(el.is_displayed()) def test_visibility_hidden_hides_child_node(self): self.driver.get(self.webserver.where_is("element_state/res/visibility-child.html")) - parent = self.driver.find_element_by_css("#parent") - child = self.driver.find_element_by_css("#child") + parent = self.driver.find_element_by_css_selector("#parent") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(parent.is_displayed()) self.assertFalse(child.is_displayed()) def test_visibility_hidden_hides_child_node_link(self): self.driver.get(self.webserver.where_is("element_state/res/visibility-child-link.html")) - parent = self.driver.find_element_by_css("#parent") - child = self.driver.find_element_by_css("#child") + parent = self.driver.find_element_by_css_selector("#parent") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(parent.is_displayed()) self.assertFalse(child.is_displayed()) def test_visibility_hidden_hides_child_node_paragraph(self): self.driver.get(self.webserver.where_is("element_state/res/visibility-child-paragraph.html")) - parent = self.driver.find_element_by_css("#parent") - child = self.driver.find_element_by_css("#child") + parent = self.driver.find_element_by_css_selector("#parent") + child = self.driver.find_element_by_css_selector("#child") self.assertFalse(parent.is_displayed()) self.assertFalse(child.is_displayed()) def test_visibility_hidden_on_child_takes_precedence(self): self.driver.get(self.webserver.where_is("element_state/res/visibility-child-presedence.html")) - child = self.driver.find_element_by_css("#child") + child = self.driver.find_element_by_css_selector("#child") self.assertTrue(child.is_displayed()) def test_visibility_hidden_on_parent_takes_precedence_over_display_block(self): @@ -284,33 +284,33 @@ class VisibilityTest(base_test.WebDriverBaseTest): def test_should_show_element_not_visible_with_hidden_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/hidden.html")) - singleHidden = self.driver.find_element_by_css('#singleHidden') + singleHidden = self.driver.find_element_by_css_selector('#singleHidden') self.assertFalse(singleHidden.is_displayed()) def test_should_show_element_not_visible_when_parent_element_has_hidden_attribute(self): self.driver.get(self.webserver.where_is("element_state/res/hidden.html")) - child = self.driver.find_element_by_css('#child') + child = self.driver.find_element_by_css_selector('#child') self.assertFalse(child.is_displayed()) class VisibilityInteractionTest(base_test.WebDriverBaseTest): def test_input_hidden_is_unclickable(self): self.driver.get(self.webserver.where_is("element_state/res/input-type-hidden-unclickable.html")) - input = self.driver.find_element_by_css("input") + input = self.driver.find_element_by_css_selector("input") with self.assertRaises(exceptions.ElementNotVisibleException): input.click() def test_hidden_input_checkbox_is_untogglable(self): self.driver.get(self.webserver.where_is("element_state/res/hidden-input-type-checkbox-untogglable.html")) - checkbox = self.driver.find_element_by_css("input") + checkbox = self.driver.find_element_by_css_selector("input") with self.assertRaises(exceptions.ElementNotVisibleException): checkbox.click() def test_typing_in_hidden_input_is_impossible(self): self.driver.get(self.webserver.where_is("element_state/res/hidden-input-type-text-writing.html")) - textfield = self.driver.find_element_by_css("input") + textfield = self.driver.find_element_by_css_selector("input") with self.assertRaises(exceptions.ElementNotVisibleException): textfield.send_keys("Koha is a popular Indian cheese") diff --git a/tests/wpt/web-platform-tests/webdriver/javascript/execute_script_test.py b/tests/wpt/web-platform-tests/webdriver/javascript/execute_script_test.py index 72810a5fe04..dd7cfca946c 100644 --- a/tests/wpt/web-platform-tests/webdriver/javascript/execute_script_test.py +++ b/tests/wpt/web-platform-tests/webdriver/javascript/execute_script_test.py @@ -4,6 +4,7 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test +from selenium.webdriver.remote.webelement import WebElement class ExecuteScriptTest(base_test.WebDriverBaseTest): diff --git a/tests/wpt/web-platform-tests/webdriver/modal/alerts_quit_test.py b/tests/wpt/web-platform-tests/webdriver/modal/alerts_quit_test.py index 2650a2dc678..83f7d145001 100644 --- a/tests/wpt/web-platform-tests/webdriver/modal/alerts_quit_test.py +++ b/tests/wpt/web-platform-tests/webdriver/modal/alerts_quit_test.py @@ -4,16 +4,17 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions, wait +from selenium.common import exceptions +from selenium.webdriver.support import wait class AlertsQuitTest(base_test.WebDriverBaseTest): def setUp(self): - self.wait = wait.WebDriverWait(self.driver, 5, ignored_exceptions=[exceptions.NoSuchAlertException]) + self.wait = wait.WebDriverWait(self.driver, 5, ignored_exceptions=[exceptions.NoAlertPresentException]) self.driver.get(self.webserver.where_is('modal/res/alerts.html')) def test_can_quit_when_an_alert_is_present(self): - self.driver.find_element_by_css('#alert').click() + self.driver.find_element_by_css_selector('#alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) self.driver.quit() with self.assertRaises(Exception): diff --git a/tests/wpt/web-platform-tests/webdriver/modal/alerts_test.py b/tests/wpt/web-platform-tests/webdriver/modal/alerts_test.py index d4182f6d07b..b982821cba2 100644 --- a/tests/wpt/web-platform-tests/webdriver/modal/alerts_test.py +++ b/tests/wpt/web-platform-tests/webdriver/modal/alerts_test.py @@ -4,144 +4,145 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions, wait - +from selenium.common import exceptions +from selenium.webdriver.support import wait class AlertsTest(base_test.WebDriverBaseTest): def setUp(self): - self.wait = wait.WebDriverWait(self.driver, 5, ignored_exceptions = [exceptions.NoSuchAlertException]) + self.wait = wait.WebDriverWait(self.driver, 5, ignored_exceptions = [exceptions.NoAlertPresentException]) self.driver.get(self.webserver.where_is('modal/res/alerts.html')) def tearDown(self): try: self.driver.switch_to_alert().dismiss() - except exceptions.NoSuchAlertException: + except exceptions.NoAlertPresentException: pass # Alerts def test_should_allow_user_to_accept_an_alert(self): - self.driver.find_element_by_css('#alert').click() + self.driver.find_element_by_css_selector('#alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - self.driver.get_current_url() + self.driver.current_url def test_should_allow_user_to_accept_an_alert_with_no_text(self): - self.driver.find_element_by_css('#empty-alert').click() + self.driver.find_element_by_css_selector('#empty-alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - self.driver.get_current_url() + self.driver.current_url def test_should_allow_user_to_dismiss_an_alert(self): - self.driver.find_element_by_css('#alert').click() + self.driver.find_element_by_css_selector('#alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.dismiss() - self.driver.get_current_url() + self.driver.current_url def test_should_allow_user_to_get_text_of_an_alert(self): - self.driver.find_element_by_css('#alert').click() + self.driver.find_element_by_css_selector('#alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) - value = alert.get_text() + value = alert.text alert.accept() self.assertEquals('cheese', value) def test_setting_the_value_of_an_alert_throws(self): - self.driver.find_element_by_css('#alert').click() + self.driver.find_element_by_css_selector('#alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) with self.assertRaises(exceptions.ElementNotVisibleException): alert.send_keys('cheese') alert.accept() def test_alert_should_not_allow_additional_commands_if_dismissed(self): - self.driver.find_element_by_css('#alert').click() + self.driver.find_element_by_css_selector('#alert').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - with self.assertRaises(exceptions.NoSuchAlertException): - alert.get_text() + with self.assertRaises(exceptions.NoAlertPresentException): + alert.text # Prompts def test_should_allow_user_to_accept_a_prompt(self): - self.driver.find_element_by_css('#prompt').click() + self.driver.find_element_by_css_selector('#prompt').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - self.wait.until(lambda x: x.find_element_by_css('#text').text == '') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == '') def test_should_allow_user_to_dismiss_a_prompt(self): - self.driver.find_element_by_css('#prompt').click() + self.driver.find_element_by_css_selector('#prompt').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.dismiss() - self.wait.until(lambda x: x.find_element_by_css('#text').text == 'null') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == 'null') def test_should_allow_user_to_set_the_value_of_a_prompt(self): - self.driver.find_element_by_css('#prompt').click() + self.driver.find_element_by_css_selector('#prompt').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.send_keys('cheese') alert.accept() - self.wait.until(lambda x: x.find_element_by_css('#text').text == 'cheese') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == 'cheese') def test_should_allow_user_to_get_text_of_a_prompt(self): - self.driver.find_element_by_css('#prompt').click() + self.driver.find_element_by_css_selector('#prompt').click() alert = self.wait.until(lambda x: x.switch_to_alert()) - value = alert.get_text() + value = alert.text alert.accept() self.assertEquals('Enter something', value) def test_prompt_should_not_allow_additional_commands_if_dismissed(self): - self.driver.find_element_by_css('#prompt').click() + self.driver.find_element_by_css_selector('#prompt').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - with self.assertRaises(exceptions.NoSuchAlertException): - alert.get_text() + with self.assertRaises(exceptions.NoAlertPresentException): + alert.text def test_prompt_should_use_default_value_if_no_keys_sent(self): - self.driver.find_element_by_css('#prompt-with-default').click() + self.driver.find_element_by_css_selector('#prompt-with-default').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - self.wait.until(lambda x: x.find_element_by_css('#text').text == 'This is a default value') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == 'This is a default value') def test_prompt_should_have_null_value_if_dismissed(self): - self.driver.find_element_by_css('#prompt-with-default').click() + self.driver.find_element_by_css_selector('#prompt-with-default').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.dismiss() - self.wait.until(lambda x: x.find_element_by_css('#text').text == 'null') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == 'null') # Confirmations def test_should_allow_user_to_accept_a_confirm(self): - self.driver.find_element_by_css('#confirm').click() + self.driver.find_element_by_css_selector('#confirm').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - self.wait.until(lambda x: x.find_element_by_css('#text').text == 'true') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == 'true') def test_should_allow_user_to_dismiss_a_confirm(self): - self.driver.find_element_by_css('#confirm').click() + self.driver.find_element_by_css_selector('#confirm').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.dismiss() - self.wait.until(lambda x: x.find_element_by_css('#text').text == 'false') + self.wait.until(lambda x: x.find_element_by_css_selector('#text').text == 'false') def test_setting_the_value_of_a_confirm_throws(self): - self.driver.find_element_by_css('#confirm').click() + self.driver.find_element_by_css_selector('#confirm').click() alert = self.wait.until(lambda x: x.switch_to_alert()) with self.assertRaises(exceptions.ElementNotVisibleException): alert.send_keys('cheese') alert.accept() def test_should_allow_user_to_get_text_of_a_confirm(self): - self.driver.find_element_by_css('#confirm').click() + self.driver.find_element_by_css_selector('#confirm').click() alert = self.wait.until(lambda x: x.switch_to_alert()) - value = alert.get_text() + value = alert.text alert.accept() self.assertEquals('cheese', value) def test_confirm_should_not_allow_additional_commands_if_dismissed(self): - self.driver.find_element_by_css('#confirm').click() + self.driver.find_element_by_css_selector('#confirm').click() alert = self.wait.until(lambda x: x.switch_to_alert()) alert.accept() - with self.assertRaises(exceptions.NoSuchAlertException): - alert.get_text() + with self.assertRaises(exceptions.NoAlertPresentException): + alert.text +""" def test_switch_to_missing_alert_fails(self): - with self.assertRaises(exceptions.NoSuchAlertException): + with self.assertRaises(exceptions.NoAlertPresentException): self.driver.switch_to_alert() - +""" if __name__ == '__main__': unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/navigation/auth_tests.py b/tests/wpt/web-platform-tests/webdriver/navigation/auth_tests.py index 068e44fe9f6..266c76e16ff 100644 --- a/tests/wpt/web-platform-tests/webdriver/navigation/auth_tests.py +++ b/tests/wpt/web-platform-tests/webdriver/navigation/auth_tests.py @@ -5,7 +5,7 @@ import ConfigParser sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions +from selenium.common import exceptions from wptserve import server from wptserve.router import any_method from wptserve.handlers import basic_auth_handler diff --git a/tests/wpt/web-platform-tests/webdriver/navigation/forward.py b/tests/wpt/web-platform-tests/webdriver/navigation/forward.py index 6cc77c2a458..67ca83227bf 100644 --- a/tests/wpt/web-platform-tests/webdriver/navigation/forward.py +++ b/tests/wpt/web-platform-tests/webdriver/navigation/forward.py @@ -11,12 +11,12 @@ class ForwardTest(base_test.WebDriverBaseTest): def test_forward(self): self.driver.get(self.webserver.where_is('navigation/res/forwardStart.html')) self.driver.get(self.webserver.where_is('navigation/res/forwardNext.html')) - nextbody = self.driver.find_element_by_css("body").text - self.driver.go_back() - currbody = self.driver.find_element_by_css("body").text + nextbody = self.driver.find_element_by_css_selector("body").text + self.driver.back() + currbody = self.driver.find_element_by_css_selector("body").text self.assertNotEqual(nextbody, currbody) - self.driver.go_forward() - currbody = self.driver.find_element_by_css("body").text + self.driver.forward() + currbody = self.driver.find_element_by_css_selector("body").text self.assertEqual(nextbody, currbody) diff --git a/tests/wpt/web-platform-tests/webdriver/navigation/forwardToNothing.py b/tests/wpt/web-platform-tests/webdriver/navigation/forwardToNothing.py index 057fb9c5828..99759681a0d 100644 --- a/tests/wpt/web-platform-tests/webdriver/navigation/forwardToNothing.py +++ b/tests/wpt/web-platform-tests/webdriver/navigation/forwardToNothing.py @@ -10,9 +10,9 @@ class ForwardToNothingTest(base_test.WebDriverBaseTest): # Get a static page that must be the same upon refresh def test_forwardToNothing(self): self.driver.get(self.webserver.where_is('navigation/forwardStart.html')) - body = self.driver.find_element_by_css("body").text - self.driver.go_forward() - currbody = self.driver.find_element_by_css("body").text + body = self.driver.find_element_by_css_selector("body").text + self.driver.forward() + currbody = self.driver.find_element_by_css_selector("body").text self.assertEqual(body, currbody) diff --git a/tests/wpt/web-platform-tests/webdriver/navigation/get_from_http_test.py b/tests/wpt/web-platform-tests/webdriver/navigation/get_from_http_test.py index 714e65f2b4d..d28a0d0b142 100644 --- a/tests/wpt/web-platform-tests/webdriver/navigation/get_from_http_test.py +++ b/tests/wpt/web-platform-tests/webdriver/navigation/get_from_http_test.py @@ -10,7 +10,7 @@ class GetFromHttpTest(base_test.WebDriverBaseTest): def testGetUrlWithNoRedirectionOverHttp(self): page = self.webserver.where_is('navigation/res/empty.html') self.driver.get(page) - url = self.driver.get_current_url() + url = self.driver.current_url self.assertEquals(page, url) @@ -18,7 +18,7 @@ class GetFromHttpTest(base_test.WebDriverBaseTest): page = self.webserver.where_is('navigation/redirect') self.driver.get(page) expected = self.webserver.where_is('navigation/res/empty.html') - url = self.driver.get_current_url() + url = self.driver.current_url self.assertEquals(expected, url) @@ -26,7 +26,7 @@ class GetFromHttpTest(base_test.WebDriverBaseTest): page = self.webserver.where_is('navigation/res/instant-meta-redirect.html') self.driver.get(page) expected = self.webserver.where_is('navigation/res/empty.html') - url = self.driver.get_current_url() + url = self.driver.current_url self.assertEquals(expected, url) @@ -34,14 +34,14 @@ class GetFromHttpTest(base_test.WebDriverBaseTest): page = self.webserver.where_is('navigation/res/1s-meta-redirect.html') self.driver.get(page) expected = self.webserver.where_is('navigation/res/empty.html') - url = self.driver.get_current_url() + url = self.driver.current_url self.assertEquals(expected, url) def testGetWillNotFollowMetaRefreshThatRefreshesAfterMoreThanOneSecond(self): page = self.webserver.where_is('navigation/res/60s-meta-redirect.html') self.driver.get(page) - url = self.driver.get_current_url() + url = self.driver.current_url self.assertEquals(page, url) diff --git a/tests/wpt/web-platform-tests/webdriver/navigation/invalid_cert_test.py b/tests/wpt/web-platform-tests/webdriver/navigation/invalid_cert_test.py index 5f84827966d..b980146ee2c 100644 --- a/tests/wpt/web-platform-tests/webdriver/navigation/invalid_cert_test.py +++ b/tests/wpt/web-platform-tests/webdriver/navigation/invalid_cert_test.py @@ -21,7 +21,7 @@ class InvalidCertTest(base_test.WebDriverBaseTest): 'navigation/res/empty.html').replace('http:', 'https:', 1) self.driver.get(expected) - self.assertEquals(expected, self.driver.get_current_url()) + self.assertEquals(expected, self.driver.current_url) if __name__ == '__main__': diff --git a/tests/wpt/web-platform-tests/webdriver/navigation/refresh_page.py b/tests/wpt/web-platform-tests/webdriver/navigation/refresh_page.py new file mode 100644 index 00000000000..1e1899008b0 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/navigation/refresh_page.py @@ -0,0 +1,27 @@ +import os +import sys +import unittest + +sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) +import base_test + + +class RefreshPageTest(base_test.WebDriverBaseTest): + # Get a static page that must be the same upon refresh + def test_refreshPage(self): + self.driver.get(self.webserver.where_is('navigation/res/refreshPageStatic.html')) + body = self.driver.find_element_by_css_selector("body").text + self.driver.execute_script("document.getElementById('body').innerHTML=''") + self.driver.refresh() + newbody = self.driver.find_element_by_css_selector("body").text + self.assertEqual(body, newbody) + + self.driver.get(self.webserver.where_is('navigation/res/refreshPageDynamic.html')) + body = self.driver.find_element_by_css_selector("body").text + self.driver.refresh() + newbody = self.driver.find_element_by_css_selector("body").text + self.assertNotEqual(body, newbody) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/runtests_p0.py b/tests/wpt/web-platform-tests/webdriver/runtests_p0.py new file mode 100644 index 00000000000..dc52c14be63 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/runtests_p0.py @@ -0,0 +1,42 @@ +import unittest + +from unittest import TestLoader, TextTestRunner, TestSuite + +from cookie import cookie_test +from navigation import forward +from navigation import forwardToNothing +from navigation import get_from_http_test +from navigation import refresh_page +from element_location import element_location_test +from element_state import visibility_test +from element_state import method_test +from element_state import properties +from javascript import execute_script_test +from user_input import clear_test +from windows import window_manipulation +from windows import tabbing + + + +if __name__ == "__main__": + + loader = TestLoader() + suite = TestSuite(( + loader.loadTestsFromModule(cookie_test), + loader.loadTestsFromModule(forward), + loader.loadTestsFromModule(forwardToNothing), + loader.loadTestsFromModule(element_location_test), + loader.loadTestsFromModule(visibility_test), + loader.loadTestsFromModule(execute_script_test), + loader.loadTestsFromModule(clear_test), + loader.loadTestsFromModule(method_test), + loader.loadTestsFromModule(properties), + loader.loadTestsFromModule(refresh_page), + loader.loadTestsFromModule(get_from_http_test), + loader.loadTestsFromModule(window_manipulation), + loader.loadTestsFromModule(tabbing) + )) + + runner = TextTestRunner(verbosity=2) + runner.run(suite) + unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/screenshot/__init__.py b/tests/wpt/web-platform-tests/webdriver/screenshot/__init__.py new file mode 100644 index 00000000000..0c8107bebed --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/screenshot/__init__.py @@ -0,0 +1 @@ +__author__ = 'b-redeg' diff --git a/tests/wpt/web-platform-tests/webdriver/screenshot/res/screenshot.html b/tests/wpt/web-platform-tests/webdriver/screenshot/res/screenshot.html new file mode 100644 index 00000000000..057bb9bf5f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/screenshot/res/screenshot.html @@ -0,0 +1,5 @@ + + +"img" element with not fully qualified url + +  \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/screenshot/take_screenshot.py b/tests/wpt/web-platform-tests/webdriver/screenshot/take_screenshot.py new file mode 100644 index 00000000000..20ff2bff2ae --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/screenshot/take_screenshot.py @@ -0,0 +1,15 @@ +import os +import sys +import unittest + +sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) +import base_test + + +class ScreenShotTest(base_test.WebDriverBaseTest): + # Get a static page that must be the same upon refresh + def test_screenShot(self): + self.driver.get(self.webserver.where_is('screenshot/res/screen.html')) + +if __name__ == '__main__': + unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/timeouts/implicit_waits_tests.py b/tests/wpt/web-platform-tests/webdriver/timeouts/implicit_waits_tests.py index e39723c50c1..5faa0ad122d 100644 --- a/tests/wpt/web-platform-tests/webdriver/timeouts/implicit_waits_tests.py +++ b/tests/wpt/web-platform-tests/webdriver/timeouts/implicit_waits_tests.py @@ -4,7 +4,7 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions +from selenium.common import exceptions class ImplicitWaitsTests(base_test.WebDriverBaseTest): @@ -12,15 +12,15 @@ class ImplicitWaitsTests(base_test.WebDriverBaseTest): self.driver.get(self.webserver.where_is('timeouts/res/implicit_waits_tests.html')) def test_find_element_by_id(self): - add = self.driver.find_element_by_css("#adder") - self.driver.set_implicit_timeout(3) + add = self.driver.find_element_by_css_selector("#adder") + self.driver.implicitly_wait(3) add.click() - self.driver.find_element_by_css("#box0") # All is well if this doesn't throw. + self.driver.find_element_by_css_selector("#box0") # All is well if this doesn't throw. def test_should_still_fail_to_find_an_element_when_implicit_waits_are_enabled(self): - self.driver.set_implicit_timeout(0.5) + self.driver.implicitly_wait(0.5) try: - self.driver.find_element_by_css("#box0") + self.driver.find_element_by_css_selector("#box0") self.fail("Expected NoSuchElementException to have been thrown") except exceptions.NoSuchElementException as e: pass @@ -28,10 +28,10 @@ class ImplicitWaitsTests(base_test.WebDriverBaseTest): self.fail("Expected NoSuchElementException but got " + str(e)) def test_should_return_after_first_attempt_to_find_one_after_disabling_implicit_waits(self): - self.driver.set_implicit_timeout(3) - self.driver.set_implicit_timeout(0) + self.driver.implicitly_wait(3) + self.driver.implicitly_wait(0) try: - self.driver.find_element_by_css("#box0") + self.driver.find_element_by_css_selector("#box0") self.fail("Expected NoSuchElementException to have been thrown") except exceptions.NoSuchElementException as e: pass @@ -39,24 +39,24 @@ class ImplicitWaitsTests(base_test.WebDriverBaseTest): self.fail("Expected NoSuchElementException but got " + str(e)) def test_should_implicitly_wait_until_at_least_one_element_is_found_when_searching_for_many(self): - add = self.driver.find_element_by_css("#adder") - self.driver.set_implicit_timeout(2) + add = self.driver.find_element_by_css_selector("#adder") + self.driver.implicitly_wait(2) add.click() add.click() - elements = self.driver.find_elements_by_css(".redbox") + elements = self.driver.find_elements_by_css_selector(".redbox") self.assertTrue(len(elements) >= 1) def test_should_still_fail_to_find_an_element_by_class_when_implicit_waits_are_enabled(self): - self.driver.set_implicit_timeout(0.5) - elements = self.driver.find_elements_by_css(".redbox") + self.driver.implicitly_wait(0.5) + elements = self.driver.find_elements_by_css_selector(".redbox") self.assertEqual(0, len(elements)) def test_should_return_after_first_attempt_to_find_many_after_disabling_implicit_waits(self): - add = self.driver.find_element_by_css("#adder") - self.driver.set_implicit_timeout(1.1) - self.driver.set_implicit_timeout(0) + add = self.driver.find_element_by_css_selector("#adder") + self.driver.implicitly_wait(1.1) + self.driver.implicitly_wait(0) add.click() - elements = self.driver.find_elements_by_css(".redbox") + elements = self.driver.find_elements_by_css_selector(".redbox") self.assertEqual(0, len(elements)) diff --git a/tests/wpt/web-platform-tests/webdriver/timeouts/page_load_timeouts_tests.py b/tests/wpt/web-platform-tests/webdriver/timeouts/page_load_timeouts_tests.py index 6d8693f6c2e..2f0d3beebaa 100644 --- a/tests/wpt/web-platform-tests/webdriver/timeouts/page_load_timeouts_tests.py +++ b/tests/wpt/web-platform-tests/webdriver/timeouts/page_load_timeouts_tests.py @@ -4,7 +4,7 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions +from selenium.common import exceptions class PageLoadTimeoutTest(base_test.WebDriverBaseTest): diff --git a/tests/wpt/web-platform-tests/webdriver/user_input/clear_test.py b/tests/wpt/web-platform-tests/webdriver/user_input/clear_test.py index 5375725128b..34e82e15999 100644 --- a/tests/wpt/web-platform-tests/webdriver/user_input/clear_test.py +++ b/tests/wpt/web-platform-tests/webdriver/user_input/clear_test.py @@ -6,45 +6,45 @@ import unittest sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) import base_test -from webdriver import exceptions +from selenium.common import exceptions class ElementClearTest(base_test.WebDriverBaseTest): def test_writable_text_input_element_should_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_writable_input_page.html")) - e = self.driver.find_element_by_css("#writableTextInput") + e = self.driver.find_element_by_css_selector("#writableTextInput") e.clear() self.assertEquals("", e.get_attribute("value")) def test_disabled_text_input_element_should_not_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_disabled_input_page.html")) - e = self.driver.find_element_by_css("#disabledTextInput") + e = self.driver.find_element_by_css_selector("#disabledTextInput") self.assertRaises(exceptions.InvalidElementStateException, lambda: e.clear()) def test_read_only_text_input_element_should_not_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_readonly_input_page.html")) - e = self.driver.find_element_by_css("#readOnlyTextInput") + e = self.driver.find_element_by_css_selector("#readOnlyTextInput") self.assertRaises(exceptions.InvalidElementStateException, lambda: e.clear()) def test_writable_text_area_element_should_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_writable_textarea_page.html")) - e = self.driver.find_element_by_css("#writableTextArea") + e = self.driver.find_element_by_css_selector("#writableTextArea") e.clear() self.assertEquals("", e.get_attribute("value")) def test_disabled_text_area_element_should_not_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_disabled_textarea_page.html")) - e = self.driver.find_element_by_css("#disabledTextArea") + e = self.driver.find_element_by_css_selector("#disabledTextArea") self.assertRaises(exceptions.InvalidElementStateException, lambda: e.clear()) def test_read_only_text_input_element_should_not_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_readonly_textarea_page.html")) - e = self.driver.find_element_by_css("#readOnlyTextArea") + e = self.driver.find_element_by_css_selector("#readOnlyTextArea") self.assertRaises(exceptions.InvalidElementStateException, lambda: e.clear()) def test_content_editable_area_should_clear(self): self.driver.get(self.webserver.where_is("user_input/res/element_clear_contenteditable_page.html")) - e = self.driver.find_element_by_css("#contentEditableElement") + e = self.driver.find_element_by_css_selector("#contentEditableElement") e.clear() self.assertEquals("", e.text) diff --git a/tests/wpt/web-platform-tests/webdriver/webdriver.cfg b/tests/wpt/web-platform-tests/webdriver/webdriver.cfg index 98ecde7bd7c..cb74f56ceaa 100644 --- a/tests/wpt/web-platform-tests/webdriver/webdriver.cfg +++ b/tests/wpt/web-platform-tests/webdriver/webdriver.cfg @@ -21,6 +21,10 @@ mode: compatibility capabilities: {"browserName": "ie"} mode: compatibility +[edge] +capabilities: {"browserName": "edge"} +mode: compatibility + [ios-driver] capabilities: {"browserName": "iphone"} mode: compatibility diff --git a/tests/wpt/web-platform-tests/webdriver/windows/__init__.py b/tests/wpt/web-platform-tests/webdriver/windows/__init__.py new file mode 100644 index 00000000000..0c8107bebed --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/__init__.py @@ -0,0 +1 @@ +__author__ = 'b-redeg' diff --git a/tests/wpt/web-platform-tests/webdriver/windows/res/win1.html b/tests/wpt/web-platform-tests/webdriver/windows/res/win1.html new file mode 100644 index 00000000000..b8bf7e80b5b --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/res/win1.html @@ -0,0 +1,5 @@ + + +window one + +
win2
\ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/windows/res/win2.html b/tests/wpt/web-platform-tests/webdriver/windows/res/win2.html new file mode 100644 index 00000000000..81a068fa888 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/res/win2.html @@ -0,0 +1,5 @@ + + +window two + +  \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/windows/res/win3.html b/tests/wpt/web-platform-tests/webdriver/windows/res/win3.html new file mode 100644 index 00000000000..d3ee6944b57 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/res/win3.html @@ -0,0 +1,5 @@ + + +window three + +  \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/windows/res/win4.html b/tests/wpt/web-platform-tests/webdriver/windows/res/win4.html new file mode 100644 index 00000000000..ef35f761769 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/res/win4.html @@ -0,0 +1,5 @@ + + +window four + +  \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/windows/res/win5.html b/tests/wpt/web-platform-tests/webdriver/windows/res/win5.html new file mode 100644 index 00000000000..673d2a19a1f --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/res/win5.html @@ -0,0 +1,5 @@ + + +window five + +  \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/webdriver/windows/tabbing.py b/tests/wpt/web-platform-tests/webdriver/windows/tabbing.py new file mode 100644 index 00000000000..a6b5f99bf37 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/tabbing.py @@ -0,0 +1,30 @@ +# -*- mode: python; fill-column: 100; comment-column: 100; -*- + +import os +import sys +import unittest +import time + +sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) +import base_test +from selenium.common import exceptions +from selenium.webdriver.common.keys import Keys +from selenium.webdriver.common.action_chains import ActionChains + + +class tabbingTest(base_test.WebDriverBaseTest): + def test_open_close_tab(self): + self.driver.get(self.webserver.where_is("windows/res/win1.html")) + self.driver.find_element_by_tag_name("div").click() + h = self.driver.window_handles + self.assertEquals(2, len(h)) + self.driver.switch_to.window(h[1]) + try: + self.driver.switch_to.window("does not exist") + self.fail("NoSuchWindowException expected") + except exceptions.NoSuchWindowException: + pass + self.driver.close() + +if __name__ == "__main__": + unittest.main() diff --git a/tests/wpt/web-platform-tests/webdriver/windows/window_manipulation.py b/tests/wpt/web-platform-tests/webdriver/windows/window_manipulation.py new file mode 100644 index 00000000000..02771672776 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/windows/window_manipulation.py @@ -0,0 +1,43 @@ +# -*- mode: python; fill-column: 100; comment-column: 100; -*- + +import os +import sys +import unittest + +sys.path.insert(1, os.path.abspath(os.path.join(__file__, "../.."))) +import base_test +from selenium.common import exceptions + + +class WindowingTest(base_test.WebDriverBaseTest): + def test_maximize(self): + #self.driver.get(self.webserver.where_is("windows/res/win1.html")) + self.driver.maximize_window() + + def test_window_size_manipulation(self): + #self.driver.get(self.webserver.where_is("windows/res/win1.html")) + self.driver.set_window_size(400, 400) + window_size = self.driver.get_window_size() + self.assertTrue("width" in window_size) + self.assertTrue("height" in window_size) + self.assertEquals({"width": 400, "height":400}, window_size) + + """ + todo: make that work + see: https://w3c.github.io/webdriver/webdriver-spec.html#setwindowsize + result = self.driver.set_window_size(100, 100) + self.assertTrue("status" in result) + self.assertEquals(result["status"], 500) + """ + + def test_window_position_manipulation(self): + #self.driver.get(self.webserver.where_is("windows/res/win1.html")) + self.driver.set_window_position(400, 400) + window_position = self.driver.get_window_position() + self.assertTrue("x" in window_position) + self.assertTrue("y" in window_position) + self.assertEquals({"x": 400, "y": 400}, window_position) + + +if __name__ == "__main__": + unittest.main()