blob: 5d01a9157492ecece4af99d2424bc259a510ed64 [file] [log] [blame] [edit]
import pytest
from webdriver.error import NoSuchElementException, StaleElementReferenceException
from tests.support.inline import inline
from tests.support.asserts import assert_error, assert_success
def refresh(session):
return session.transport.send(
"POST", "session/{session_id}/refresh".format(**vars(session)))
def test_null_response_value(session):
session.url = inline("<div>")
response = refresh(session)
value = assert_success(response)
assert value is None
def test_no_browsing_context(session, create_window):
new_handle = create_window()
session.window_handle = new_handle
session.close()
assert new_handle not in session.handles
result = refresh(session)
assert_error(result, "no such window")
def test_basic(session):
url = inline("<div id=foo>")
session.url = url
element = session.find.css("#foo", all=False)
response = refresh(session)
assert_success(response)
with pytest.raises(StaleElementReferenceException):
element.property("id")
assert session.url == url
assert session.find.css("#foo", all=False)
def test_dismissed_beforeunload(session):
url_beforeunload = inline("""
<input type="text">
<script>
window.addEventListener("beforeunload", function (event) {
event.preventDefault();
});
</script>
""")
session.url = url_beforeunload
element = session.find.css("input", all=False)
element.send_keys("bar")
response = refresh(session)
assert_success(response)
with pytest.raises(StaleElementReferenceException):
element.property("id")
session.find.css("input", all=False)
def test_history_pushstate(session, url):
pushstate_page = inline("""
<script>
function pushState() {
history.pushState({foo: "bar"}, "", "#pushstate");
}
</script>
<a onclick="javascript:pushState();">click</a>
""")
session.url = pushstate_page
session.find.css("a", all=False).click()
assert session.url == "{}#pushstate".format(pushstate_page)
assert session.execute_script("return history.state;") == {"foo": "bar"}
session.execute_script("""
let elem = window.document.createElement('div');
window.document.body.appendChild(elem);
""")
element = session.find.css("div", all=False)
response = refresh(session)
assert_success(response)
assert session.url == "{}#pushstate".format(pushstate_page)
assert session.execute_script("return history.state;") == {"foo": "bar"}
with pytest.raises(StaleElementReferenceException):
element.property("id")
def test_refresh_switches_to_parent_browsing_context(session, create_frame):
session.url = inline("<div id=foo>")
session.switch_frame(create_frame())
with pytest.raises(NoSuchElementException):
session.find.css("#foo", all=False)
response = refresh(session)
assert_success(response)
session.find.css("#foo", all=False)