from tests.support.asserts import assert_same_element, assert_success def execute_script(session, script, args=None): if args is None: args = [] body = {"script": script, "args": args} return session.transport.send( "POST", "/session/{session_id}/execute/sync".format(**vars(session)), body) def test_content_attribute(session, inline): session.url = inline("") response = execute_script(session, """ const input = document.querySelector("input"); return input.value; """) assert_success(response, "foobar") def test_idl_attribute(session, inline): session.url = inline(""" """) response = execute_script(session, """ const input = document.querySelector("input"); return input.value; """) assert_success(response, "foobar") def test_idl_attribute_element(session, inline): session.url = inline("""

foo

bar """) _foo, bar = session.find.css("p") response = execute_script(session, """ const foo = document.querySelector("p"); return foo.bar; """) value = assert_success(response) assert_same_element(session, bar, value) def test_script_defining_property(session, inline): session.url = inline("") execute_script(session, """ const input = document.querySelector("input"); input.foobar = "foobar"; """) response = execute_script(session, """ const input = document.querySelector("input"); return input.foobar; """) assert_success(response, "foobar")