1from selenium.common.exceptions import TimeoutException 2from selenium.webdriver.common.by import By 3from selenium.webdriver.support import expected_conditions as EC 4from selenium.webdriver.support.ui import WebDriverWait 5from notebook.tests.selenium.utils import wait_for_selector 6 7restart_selectors = [ 8 '#restart_kernel', '#restart_clear_output', '#restart_run_all' 9] 10notify_interaction = '#notification_kernel > span' 11 12shutdown_selector = '#shutdown_kernel' 13confirm_selector = '.btn-danger' 14cancel_selector = ".modal-footer button:first-of-type" 15 16 17def test_cancel_restart_or_shutdown(notebook): 18 """Click each of the restart options, then cancel the confirmation dialog""" 19 browser = notebook.browser 20 kernel_menu = browser.find_element_by_id('kernellink') 21 22 for menu_item in restart_selectors + [shutdown_selector]: 23 kernel_menu.click() 24 wait_for_selector(browser, menu_item, visible=True, single=True).click() 25 wait_for_selector(browser, cancel_selector, visible=True, single=True).click() 26 WebDriverWait(browser, 3).until( 27 EC.invisibility_of_element((By.CSS_SELECTOR, '.modal-backdrop')) 28 ) 29 assert notebook.is_kernel_running() 30 31 32def test_menu_items(notebook): 33 browser = notebook.browser 34 kernel_menu = browser.find_element_by_id('kernellink') 35 36 for menu_item in restart_selectors: 37 # Shutdown 38 kernel_menu.click() 39 wait_for_selector(browser, shutdown_selector, visible=True, single=True).click() 40 41 # Confirm shutdown 42 wait_for_selector(browser, confirm_selector, visible=True, single=True).click() 43 44 WebDriverWait(browser, 3).until( 45 lambda b: not notebook.is_kernel_running(), 46 message="Kernel did not shut down as expected" 47 ) 48 49 # Restart 50 # Selenium can't click the menu while a modal dialog is fading out 51 WebDriverWait(browser, 3).until( 52 EC.invisibility_of_element((By.CSS_SELECTOR, '.modal-backdrop')) 53 ) 54 kernel_menu.click() 55 56 wait_for_selector(browser, menu_item, visible=True, single=True).click() 57 WebDriverWait(browser, 10).until( 58 lambda b: notebook.is_kernel_running(), 59 message="Restart (%r) after shutdown did not start kernel" % menu_item 60 ) 61