mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-04-02 20:42:49 +00:00
Bug 845805 - Add a By class to the marionette python bindings; r=dburns
This commit is contained in:
parent
fb296d2a48
commit
e6bc2ee9cd
@ -3,6 +3,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
from gestures import *
|
||||
from by import By
|
||||
from marionette import Marionette, HTMLElement, Actions, MultiActions
|
||||
from marionette_test import MarionetteTestCase, CommonTestCase, expectedFailure, skip, SkipTest
|
||||
from emulator import Emulator
|
||||
|
25
testing/marionette/client/marionette/by.py
Normal file
25
testing/marionette/client/marionette/by.py
Normal file
@ -0,0 +1,25 @@
|
||||
# Copyright 2008-2009 WebDriver committers
|
||||
# Copyright 2008-2009 Google Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
class By(object):
|
||||
ID = "id"
|
||||
XPATH = "xpath"
|
||||
LINK_TEXT = "link text"
|
||||
PARTIAL_LINK_TEXT = "partial link text"
|
||||
NAME = "name"
|
||||
TAG_NAME = "tag name"
|
||||
CLASS_NAME = "class name"
|
||||
CSS_SELECTOR = "css selector"
|
@ -4,22 +4,23 @@
|
||||
|
||||
import time
|
||||
from marionette_test import MarionetteTestCase
|
||||
from by import By
|
||||
|
||||
|
||||
class TestClick(MarionetteTestCase):
|
||||
def test_click(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
link = self.marionette.find_element("id", "mozLink")
|
||||
link = self.marionette.find_element(By.ID, "mozLink")
|
||||
link.click()
|
||||
self.assertEqual("Clicked", self.marionette.execute_script("return document.getElementById('mozLink').innerHTML;"))
|
||||
|
||||
def testClickingALinkMadeUpOfNumbersIsHandledCorrectly(self):
|
||||
test_html = self.marionette.absolute_url("clicks.html")
|
||||
self.marionette.navigate(test_html)
|
||||
self.marionette.find_element("link text", "333333").click()
|
||||
self.marionette.find_element(By.LINK_TEXT, "333333").click()
|
||||
count = 0
|
||||
while len(self.marionette.find_elements("id", "username")) == 0:
|
||||
while len(self.marionette.find_elements(By.ID, "username")) == 0:
|
||||
count += 1
|
||||
time.sleep(1)
|
||||
if count == 30:
|
||||
@ -48,7 +49,7 @@ class TestClickChrome(MarionetteTestCase):
|
||||
wins.remove(self.win)
|
||||
newWin = wins.pop()
|
||||
self.marionette.switch_to_window(newWin)
|
||||
box = self.marionette.find_element("id", "testBox")
|
||||
box = self.marionette.find_element(By.ID, "testBox")
|
||||
self.assertFalse(self.marionette.execute_script("return arguments[0].checked;", [box]))
|
||||
box.click()
|
||||
self.assertTrue(self.marionette.execute_script("return arguments[0].checked;", [box]))
|
||||
|
@ -5,23 +5,25 @@
|
||||
import os
|
||||
from marionette_test import MarionetteTestCase
|
||||
from marionette import HTMLElement
|
||||
from by import By
|
||||
from errors import NoSuchElementException
|
||||
|
||||
|
||||
class TestElements(MarionetteTestCase):
|
||||
def test_id(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementById('mozLink');")
|
||||
found_el = self.marionette.find_element("id", "mozLink")
|
||||
found_el = self.marionette.find_element(By.ID, "mozLink")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_child_element(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.find_element("id", "divLink")
|
||||
div = self.marionette.find_element("id", "testDiv")
|
||||
found_el = div.find_element("tag name", "a")
|
||||
el = self.marionette.find_element(By.ID, "divLink")
|
||||
div = self.marionette.find_element(By.ID, "testDiv")
|
||||
found_el = div.find_element(By.TAG_NAME, "a")
|
||||
self.assertEqual("a", found_el.tag_name)
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
@ -29,20 +31,20 @@ class TestElements(MarionetteTestCase):
|
||||
def test_child_elements(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.find_element("id", "divLink2")
|
||||
div = self.marionette.find_element("id", "testDiv")
|
||||
found_els = div.find_elements("tag name", "a")
|
||||
el = self.marionette.find_element(By.ID, "divLink2")
|
||||
div = self.marionette.find_element(By.ID, "testDiv")
|
||||
found_els = div.find_elements(By.TAG_NAME, "a")
|
||||
self.assertTrue(el.id in [found_el.id for found_el in found_els])
|
||||
|
||||
def test_tag_name(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementsByTagName('body')[0];")
|
||||
found_el = self.marionette.find_element("tag name", "body")
|
||||
found_el = self.marionette.find_element(By.TAG_NAME, "body")
|
||||
self.assertEqual('body', found_el.tag_name)
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("tag name", "body")[0]
|
||||
found_el = self.marionette.find_elements(By.TAG_NAME, "body")[0]
|
||||
self.assertEqual('body', found_el.tag_name)
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
@ -51,32 +53,32 @@ class TestElements(MarionetteTestCase):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementsByClassName('linkClass')[0];")
|
||||
found_el = self.marionette.find_element("class name", "linkClass")
|
||||
self.assertEqual(HTMLElement, type(found_el));
|
||||
found_el = self.marionette.find_element(By.CLASS_NAME, "linkClass")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("class name", "linkClass")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el));
|
||||
found_el = self.marionette.find_elements(By.CLASS_NAME, "linkClass")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_by_name(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementsByName('myInput')[0];")
|
||||
found_el = self.marionette.find_element("name", "myInput")
|
||||
found_el = self.marionette.find_element(By.NAME, "myInput")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("name", "myInput")[0]
|
||||
found_el = self.marionette.find_elements(By.NAME, "myInput")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
|
||||
def test_selector(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementById('testh1');")
|
||||
found_el = self.marionette.find_element("css selector", "h1")
|
||||
found_el = self.marionette.find_element(By.CSS_SELECTOR, "h1")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("css selector", "h1")[0]
|
||||
found_el = self.marionette.find_elements(By.CSS_SELECTOR, "h1")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
@ -84,10 +86,10 @@ class TestElements(MarionetteTestCase):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementById('mozLink');")
|
||||
found_el = self.marionette.find_element("link text", "Click me!")
|
||||
found_el = self.marionette.find_element(By.LINK_TEXT, "Click me!")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("link text", "Click me!")[0]
|
||||
found_el = self.marionette.find_elements(By.LINK_TEXT, "Click me!")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
@ -95,10 +97,10 @@ class TestElements(MarionetteTestCase):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementById('mozLink');")
|
||||
found_el = self.marionette.find_element("partial link text", "Click m")
|
||||
found_el = self.marionette.find_element(By.PARTIAL_LINK_TEXT, "Click m")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("partial link text", "Click m")[0]
|
||||
found_el = self.marionette.find_elements(By.PARTIAL_LINK_TEXT, "Click m")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
@ -106,10 +108,10 @@ class TestElements(MarionetteTestCase):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.execute_script("return window.document.getElementById('mozLink');")
|
||||
found_el = self.marionette.find_element("xpath", "id('mozLink')")
|
||||
found_el = self.marionette.find_element(By.XPATH, "id('mozLink')")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
found_el = self.marionette.find_elements("xpath", "id('mozLink')")[0]
|
||||
found_el = self.marionette.find_elements(By.XPATH, "id('mozLink')")[0]
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
@ -117,33 +119,34 @@ class TestElements(MarionetteTestCase):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
self.marionette.set_search_timeout(1000)
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, "id", "I'm not on the page")
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "I'm not on the page")
|
||||
self.marionette.set_search_timeout(0)
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, "id", "I'm not on the page")
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "I'm not on the page")
|
||||
|
||||
def test_timeout(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, "id", "newDiv")
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "newDiv")
|
||||
self.assertTrue(True, self.marionette.set_search_timeout(4000))
|
||||
self.marionette.navigate(test_html)
|
||||
self.assertEqual(HTMLElement, type(self.marionette.find_element("id", "newDiv")))
|
||||
self.assertEqual(HTMLElement, type(self.marionette.find_element(By.ID, "newDiv")))
|
||||
|
||||
def test_css_selector_scope_doesnt_start_at_rootnode(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
el = self.marionette.find_element("id","mozLink")
|
||||
nav_el = self.marionette.find_element("id","testDiv")
|
||||
found_els = nav_el.find_elements("css selector", "a")
|
||||
el = self.marionette.find_element(By.ID, "mozLink")
|
||||
nav_el = self.marionette.find_element(By.ID, "testDiv")
|
||||
found_els = nav_el.find_elements(By.CSS_SELECTOR, "a")
|
||||
self.assertFalse(el.id in [found_el.id for found_el in found_els])
|
||||
|
||||
def test_finding_active_element_returns_element(self):
|
||||
test_html = self.marionette.absolute_url("test.html")
|
||||
self.marionette.navigate(test_html)
|
||||
fbody = self.marionette.find_element('tag name', 'body')
|
||||
fbody = self.marionette.find_element(By.TAG_NAME, 'body')
|
||||
abody = self.marionette.get_active_element()
|
||||
self.assertEqual(fbody, abody)
|
||||
|
||||
|
||||
class TestElementsChrome(MarionetteTestCase):
|
||||
def setUp(self):
|
||||
MarionetteTestCase.setUp(self)
|
||||
@ -161,51 +164,51 @@ class TestElementsChrome(MarionetteTestCase):
|
||||
|
||||
def test_id(self):
|
||||
el = self.marionette.execute_script("return window.document.getElementById('textInput');")
|
||||
found_el = self.marionette.find_element("id", "textInput")
|
||||
found_el = self.marionette.find_element(By.ID, "textInput")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_child_element(self):
|
||||
el = self.marionette.find_element("id", "textInput")
|
||||
parent = self.marionette.find_element("id", "things")
|
||||
found_el = parent.find_element("tag name", "textbox")
|
||||
el = self.marionette.find_element(By.ID, "textInput")
|
||||
parent = self.marionette.find_element(By.ID, "things")
|
||||
found_el = parent.find_element(By.TAG_NAME, "textbox")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_child_elements(self):
|
||||
el = self.marionette.find_element("id", "textInput3")
|
||||
parent = self.marionette.find_element("id", "things")
|
||||
found_els = parent.find_elements("tag name", "textbox")
|
||||
el = self.marionette.find_element(By.ID, "textInput3")
|
||||
parent = self.marionette.find_element(By.ID, "things")
|
||||
found_els = parent.find_elements(By.TAG_NAME, "textbox")
|
||||
self.assertTrue(el.id in [found_el.id for found_el in found_els])
|
||||
|
||||
def test_tag_name(self):
|
||||
el = self.marionette.execute_script("return window.document.getElementsByTagName('vbox')[0];")
|
||||
found_el = self.marionette.find_element("tag name", "vbox")
|
||||
found_el = self.marionette.find_element(By.TAG_NAME, "vbox")
|
||||
self.assertEquals('vbox', found_el.tag_name)
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_class_name(self):
|
||||
el = self.marionette.execute_script("return window.document.getElementsByClassName('asdf')[0];")
|
||||
found_el = self.marionette.find_element("class name", "asdf")
|
||||
self.assertEqual(HTMLElement, type(found_el));
|
||||
found_el = self.marionette.find_element(By.CLASS_NAME, "asdf")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_xpath(self):
|
||||
el = self.marionette.execute_script("return window.document.getElementById('testBox');")
|
||||
found_el = self.marionette.find_element("xpath", "id('testBox')")
|
||||
self.assertEqual(HTMLElement, type(found_el));
|
||||
found_el = self.marionette.find_element(By.XPATH, "id('testBox')")
|
||||
self.assertEqual(HTMLElement, type(found_el))
|
||||
self.assertEqual(el, found_el)
|
||||
|
||||
def test_not_found(self):
|
||||
self.marionette.set_search_timeout(1000)
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, "id", "I'm not on the page")
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "I'm not on the page")
|
||||
self.marionette.set_search_timeout(0)
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, "id", "I'm not on the page")
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "I'm not on the page")
|
||||
|
||||
def test_timeout(self):
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, "id", "myid")
|
||||
self.assertRaises(NoSuchElementException, self.marionette.find_element, By.ID, "myid")
|
||||
self.assertTrue(True, self.marionette.set_search_timeout(4000))
|
||||
self.marionette.execute_script("window.setTimeout(function() {var b = window.document.createElement('button'); b.id = 'myid'; document.getElementById('things').appendChild(b);}, 1000)")
|
||||
self.assertEqual(HTMLElement, type(self.marionette.find_element("id", "myid")))
|
||||
self.assertEqual(HTMLElement, type(self.marionette.find_element(By.ID, "myid")))
|
||||
self.marionette.execute_script("window.document.getElementById('things').removeChild(window.document.getElementById('myid'));")
|
||||
|
Loading…
x
Reference in New Issue
Block a user