blob: 51999936e71aae5584f73ba661d5e355cf0a732e [file] [log] [blame]
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("<input value=foobar>")
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("""
<input>
<script>
const input = document.querySelector("input");
input.value = "foobar";
</script>
""")
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("""
<p>foo
<p>bar
<script>
const elements = document.querySelectorAll("p");
let foo = elements[0];
let bar = elements[1];
foo.bar = bar;
</script>
""")
_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("<input>")
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")