Bug 759477: adding the ability to get the tag name of an Marionette HTMLElement; r=jgriffin

This commit is contained in:
David Burns 2012-08-08 13:21:50 -07:00
parent 3a0930992b
commit 128d2d6f45
4 changed files with 46 additions and 1 deletions

View File

@ -77,6 +77,10 @@ class HTMLElement(object):
def is_displayed(self):
return self.marionette._send_message('isElementDisplayed', 'value', element=self.id)
@property
def tag_name(self):
return self.marionette._send_message('getElementTagName', 'value', element=self.id)
class Marionette(object):

View File

@ -22,6 +22,7 @@ class TestElements(MarionetteTestCase):
el = self.marionette.find_element("id", "divLink")
div = self.marionette.find_element("id", "testDiv")
found_el = div.find_element("tag name", "a")
self.assertEqual("a", found_el.tag_name)
self.assertEqual(HTMLElement, type(found_el))
self.assertEqual(el.id, found_el.id)
@ -38,9 +39,11 @@ class TestElements(MarionetteTestCase):
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")
self.assertEqual('body', found_el.tag_name)
self.assertEqual(HTMLElement, type(found_el))
self.assertEqual(el.id, found_el.id)
found_el = self.marionette.find_elements("tag name", "body")[0]
self.assertEqual('body', found_el.tag_name)
self.assertEqual(HTMLElement, type(found_el))
self.assertEqual(el.id, found_el.id)
@ -157,6 +160,7 @@ class TestElementsChrome(MarionetteTestCase):
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")
self.assertEquals('vbox', found_el.tag_name)
self.assertEqual(HTMLElement, type(found_el))
self.assertEqual(el.id, found_el.id)

View File

@ -1056,6 +1056,28 @@ MarionetteDriverActor.prototype = {
}
},
/**
* Get the tag name of the element.
*
* @param object aRequest
* 'element' member holds the reference id to
* the element that will be inspected
*/
getElementTagName: function MDA_getElementTagName(aRequest) {
if (this.context == "chrome") {
try {
let el = this.curBrowser.elementManager.getKnownElement(aRequest.element, this.getCurrentWindow());
this.sendResponse(el.tagName.toLowerCase());
}
catch (e) {
this.sendError(e.message, e.code, e.stack);
}
}
else {
this.sendAsync("getElementTagName", {element: aRequest.element});
}
},
/**
* Check if element is displayed
*
@ -1421,6 +1443,7 @@ MarionetteDriverActor.prototype.requestTypes = {
"clickElement": MarionetteDriverActor.prototype.clickElement,
"getElementAttribute": MarionetteDriverActor.prototype.getElementAttribute,
"getElementText": MarionetteDriverActor.prototype.getElementText,
"getElementTagName": MarionetteDriverActor.prototype.getElementTagName,
"isElementDisplayed": MarionetteDriverActor.prototype.isElementDisplayed,
"isElementEnabled": MarionetteDriverActor.prototype.isElementEnabled,
"isElementSelected": MarionetteDriverActor.prototype.isElementSelected,

View File

@ -100,6 +100,7 @@ function startListeners() {
addMessageListenerId("Marionette:clickElement", clickElement);
addMessageListenerId("Marionette:getElementAttribute", getElementAttribute);
addMessageListenerId("Marionette:getElementText", getElementText);
addMessageListenerId("Marionette:getElementTagName", getElementTagName);
addMessageListenerId("Marionette:isElementDisplayed", isElementDisplayed);
addMessageListenerId("Marionette:isElementEnabled", isElementEnabled);
addMessageListenerId("Marionette:isElementSelected", isElementSelected);
@ -159,7 +160,7 @@ function deleteSession(msg) {
removeMessageListenerId("Marionette:findElementsContent", findElementsContent);
removeMessageListenerId("Marionette:clickElement", clickElement);
removeMessageListenerId("Marionette:getElementAttribute", getElementAttribute);
removeMessageListenerId("Marionette:getElementText", getElementText);
removeMessageListenerId("Marionette:getElementTagName", getElementTagName);
removeMessageListenerId("Marionette:isElementDisplayed", isElementDisplayed);
removeMessageListenerId("Marionette:isElementEnabled", isElementEnabled);
removeMessageListenerId("Marionette:isElementSelected", isElementSelected);
@ -615,6 +616,19 @@ function getElementText(msg) {
}
}
/**
* Get the tag name of an element.
*/
function getElementTagName(msg) {
try {
let el = elementManager.getKnownElement(msg.json.element, curWindow);
sendResponse({value: el.tagName.toLowerCase()});
}
catch (e) {
sendError(e.message, e.code, e.stack);
}
}
/**
* Check if element is displayed
*/