1from webdriver.error import NoSuchAlertException 2 3from tests.support.asserts import assert_error, assert_success 4from tests.support.sync import Poll 5 6 7def get_alert_text(session): 8 return session.transport.send( 9 "GET", "session/{session_id}/alert/text".format(**vars(session))) 10 11 12def test_no_top_browsing_context(session, closed_window): 13 response = get_alert_text(session) 14 assert_error(response, "no such window") 15 16 17def test_no_browsing_context(session, closed_frame): 18 response = get_alert_text(session) 19 assert_error(response, "no such alert") 20 21 22def test_no_user_prompt(session): 23 response = get_alert_text(session) 24 assert_error(response, "no such alert") 25 26 27def test_get_alert_text(session, inline): 28 session.url = inline("<script>window.alert('Hello');</script>") 29 response = get_alert_text(session) 30 assert_success(response) 31 assert isinstance(response.body, dict) 32 assert "value" in response.body 33 alert_text = response.body["value"] 34 assert isinstance(alert_text, str) 35 assert alert_text == "Hello" 36 37 38def test_get_confirm_text(session, inline): 39 session.url = inline("<script>window.confirm('Hello');</script>") 40 response = get_alert_text(session) 41 assert_success(response) 42 assert isinstance(response.body, dict) 43 assert "value" in response.body 44 confirm_text = response.body["value"] 45 assert isinstance(confirm_text, str) 46 assert confirm_text == "Hello" 47 48 49def test_get_prompt_text(session, inline): 50 session.url = inline("<script>window.prompt('Enter Your Name: ', 'Federer');</script>") 51 response = get_alert_text(session) 52 assert_success(response) 53 assert isinstance(response.body, dict) 54 assert "value" in response.body 55 prompt_text = response.body["value"] 56 assert isinstance(prompt_text, str) 57 assert prompt_text == "Enter Your Name: " 58 59 60def test_unexpected_alert(session): 61 session.execute_script("setTimeout(function() { alert('Hello'); }, 100);") 62 wait = Poll( 63 session, 64 timeout=5, 65 ignored_exceptions=NoSuchAlertException, 66 message="No user prompt with text 'Hello' detected") 67 wait.until(lambda s: s.alert.text == "Hello") 68 69 response = get_alert_text(session) 70 assert_success(response) 71