def element_html(driver, elements):
"""Return source of a particular HTML element on the page.
:param driver: webdriver or marionette object - the object you use
to drive your webdriver or marionette tests.
:param elements: Webdriver.remote.webelement.WebElement object or
marionette.marionette.HTMLElement object or
a list of WebElement or HTMLElement objects
:returns: string or list of strings of HTML element's source
"""
try:
from selenium.webdriver.remote.webelement import WebElement
except:
from marionette.marionette import HTMLElement
# just make this any type/class that is irrelevant
WebElement = str
finally:
if locals().get('HTMLElement', None) is None:
# just make this any type/class that is irrelevant
HTMLElement = str
def get_source(element):
return driver.execute_script("return arguments[0].innerHTML;", element)
ret_val = None
if isinstance(elements, list):
ret_val = []
for el in elements:
ret_val.append(get_source(el))
elif isinstance(elements, WebElement) or isinstance(elements, HTMLElement):
if HTMLElement != str:
elements = [elements]
ret_val = get_source(elements)
else:
raise Exception("Provide a webdriver's WebElement/marionette's "
"HTMLElement or a list of those objects.")
return ret_val