Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

import pytest
from tests.support.asserts import assert_success
def element_click(session, element):
return session.transport.send(
"POST", "session/{session_id}/element/{element_id}/click".format(
session_id=session.session_id, element_id=element.id))
@pytest.mark.parametrize("click_on", ["host_element", "checkbox_element"])
def test_shadow_element_click(session, get_test_page, click_on):
session.url = get_test_page()
host_element = session.find.css("custom-element", all=False)
checkbox_element = session.execute_script("""
return arguments[0].shadowRoot.querySelector("input")
""",
args=(host_element, ))
is_pre_checked = session.execute_script("""
return arguments[0].checked
""",
args=(checkbox_element, ))
assert is_pre_checked is False
response = element_click(session, locals()[click_on])
assert_success(response)
is_post_checked = session.execute_script("""
return arguments[0].checked
""",
args=(checkbox_element, ))
assert is_post_checked is True
@pytest.mark.parametrize("click_on",
["outer_element", "inner_element", "checkbox"])
def test_nested_shadow_element_click(session, get_test_page, click_on):
session.url = get_test_page(nested_shadow_dom=True)
outer_element = session.find.css("custom-element", all=False)
inner_element = session.execute_script("""
return arguments[0].shadowRoot.querySelector("inner-custom-element")
""",
args=(outer_element, ))
checkbox = session.execute_script("""
return arguments[0].shadowRoot.querySelector("input")
""",
args=(inner_element, ))
is_pre_checked = session.execute_script("return arguments[0].checked",
args=(checkbox, ))
assert is_pre_checked is False
click_response = element_click(session, locals()[click_on])
assert_success(click_response)
is_post_checked = session.execute_script("return arguments[0].checked",
args=(checkbox, ))
assert is_post_checked is True