blob: a28dec768750fef214027534a8e6f18cbc7034c8 [file] [log] [blame]
import pytest
from webdriver.error import NoSuchAlertException
from tests.support.asserts import assert_error, assert_success
from tests.support.helpers import wait_for_new_handle
from tests.support.sync import Poll
def dismiss_alert(session):
return session.transport.send(
"POST", "session/{session_id}/alert/dismiss".format(**vars(session)))
def test_null_response_value(session, inline):
session.url = inline("<script>window.alert('Hello');</script>")
response = dismiss_alert(session)
value = assert_success(response)
assert value is None
def test_no_top_browsing_context(session, closed_window):
response = dismiss_alert(session)
assert_error(response, "no such window")
def test_no_browsing_context(session, closed_frame):
response = dismiss_alert(session)
assert_error(response, "no such alert")
def test_no_user_prompt(session):
response = dismiss_alert(session)
assert_error(response, "no such alert")
def test_dismiss_alert(session, inline):
session.url = inline("<script>window.alert('Hello');</script>")
response = dismiss_alert(session)
assert_success(response)
with pytest.raises(NoSuchAlertException):
session.alert.text
def test_dismiss_confirm(session, inline):
session.url = inline("<script>window.result = window.confirm('Hello');</script>")
response = dismiss_alert(session)
assert_success(response)
with pytest.raises(NoSuchAlertException):
session.alert.text
assert session.execute_script("return window.result;") is False
def test_dismiss_prompt(session, inline):
session.url = inline("""
<script>window.result = window.prompt('Enter Your Name: ', 'Federer');</script>
""")
response = dismiss_alert(session)
assert_success(response)
with pytest.raises(NoSuchAlertException):
session.alert.text
assert session.execute_script("return window.result") is None
def test_unexpected_alert(session):
session.execute_script("setTimeout(function() { alert('Hello'); }, 100);")
wait = Poll(
session,
timeout=5,
ignored_exceptions=NoSuchAlertException,
message="No user prompt with text 'Hello' detected")
wait.until(lambda s: s.alert.text == "Hello")
response = dismiss_alert(session)
assert_success(response)
with pytest.raises(NoSuchAlertException):
session.alert.text
def test_dismiss_in_popup_window(session, inline):
orig_handles = session.handles
session.url = inline("""
<button onclick="window.open('about:blank', '_blank', 'width=500; height=200;resizable=yes');">open</button>
""")
button = session.find.css("button", all=False)
button.click()
session.window_handle = wait_for_new_handle(session, orig_handles)
session.url = inline("""
<script>window.alert("Hello")</script>
""")
response = dismiss_alert(session)
assert_success(response)
with pytest.raises(NoSuchAlertException):
session.alert.text