diff --git a/tests/selenium/folder_list.py b/tests/selenium/folder_list.py index 9444e06985..fe19ec80f2 100644 --- a/tests/selenium/folder_list.py +++ b/tests/selenium/folder_list.py @@ -3,6 +3,10 @@ from base import WebTest, USER, PASS from selenium.webdriver.common.by import By from runner import test_runner +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +from selenium.common.exceptions import NoSuchElementException +from selenium.common.exceptions import StaleElementReferenceException class FolderListTests(WebTest): @@ -12,10 +16,20 @@ def __init__(self): self.wait_with_folder_list() def reload_folder_list(self): - assert self.by_class('main_menu').text.startswith('Main') + main_menu = self.by_class('main_menu') + assert main_menu.text.startswith('Main') self.by_class('update_message_list').click() self.safari_workaround(3) - assert self.by_class('main_menu').text.startswith('Main') + # update_message_list triggers site reload, so we explicitly wait for element to become stale + WebDriverWait(self.driver, 20).until(EC.staleness_of(main_menu)) + ignored_exceptions=(NoSuchElementException,StaleElementReferenceException,) + # And once it is stale, we can now wait for it to become available again as the page contents are loaded again. + main_menu = WebDriverWait(self.driver, 10,ignored_exceptions=ignored_exceptions).until( + EC.presence_of_element_located((By.CLASS_NAME, 'main_menu')) + ) + main_menu = self.by_class('main_menu') + #and finally perform our test on the actual, refreshed element. + assert main_menu.text.startswith('Main') def expand_section(self): self.by_css('[data-source=".settings"]').click() @@ -59,7 +73,7 @@ def show_folders(self): print("FOLDER LIST TESTS") test_runner(FolderListTests, [ - # 'reload_folder_list', + 'reload_folder_list', 'expand_section', 'collapse_section', 'hide_folders',