diff --git a/django/contrib/admin/tests.py b/django/contrib/admin/tests.py index 4daa6ec6d8..c99488cd41 100644 --- a/django/contrib/admin/tests.py +++ b/django/contrib/admin/tests.py @@ -41,6 +41,20 @@ class AdminSeleniumWebDriverTestCase(LiveServerTestCase): timeout ) + def wait_page_loaded(self): + """ + Block until page has started to load. + """ + from selenium.common.exceptions import TimeoutException + try: + # Wait for the next page to be loaded + self.wait_loaded_tag('body') + except TimeoutException: + # IE7 occasionnally returns an error "Internet Explorer cannot + # display the webpage" and doesn't load the next page. We just + # ignore it. + pass + def admin_login(self, username, password, login_url='/admin/'): """ Helper function to log into the admin. @@ -53,8 +67,7 @@ class AdminSeleniumWebDriverTestCase(LiveServerTestCase): login_text = _('Log in') self.selenium.find_element_by_xpath( '//input[@value="%s"]' % login_text).click() - # Wait for the next page to be loaded. - self.wait_loaded_tag('body') + self.wait_page_loaded() def get_css_value(self, selector, attribute): """ diff --git a/tests/regressiontests/admin_inlines/tests.py b/tests/regressiontests/admin_inlines/tests.py index 54283bf509..f5a54b08b6 100644 --- a/tests/regressiontests/admin_inlines/tests.py +++ b/tests/regressiontests/admin_inlines/tests.py @@ -546,15 +546,7 @@ class SeleniumFirefoxTests(AdminSeleniumWebDriverTestCase): self.selenium.find_element_by_name('profile_set-2-last_name').send_keys('2 last name 2') self.selenium.find_element_by_xpath('//input[@value="Save"]').click() - - try: - # Wait for the next page to be loaded. - self.wait_loaded_tag('body') - except TimeoutException: - # IE7 occasionnally returns an error "Internet Explorer cannot - # display the webpage" and doesn't load the next page. We just - # ignore it. - pass + self.wait_page_loaded() # Check that the objects have been created in the database self.assertEqual(ProfileCollection.objects.all().count(), 1) diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index 667f3bc183..cd83b73897 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -3262,16 +3262,7 @@ class SeleniumAdminViewsFirefoxTests(AdminSeleniumWebDriverTestCase): # Save and check that everything is properly stored in the database self.selenium.find_element_by_xpath('//input[@value="Save"]').click() - - try: - # Wait for the next page to be loaded. - self.wait_loaded_tag('body') - except TimeoutException: - # IE7 occasionnally returns an error "Internet Explorer cannot - # display the webpage" and doesn't load the next page. We just - # ignore it. - pass - + self.wait_page_loaded() self.assertEqual(MainPrepopulated.objects.all().count(), 1) MainPrepopulated.objects.get( name=' this is the mAin nÀMë and it\'s awεšome', diff --git a/tests/regressiontests/admin_widgets/tests.py b/tests/regressiontests/admin_widgets/tests.py index 452387078d..d559b53531 100644 --- a/tests/regressiontests/admin_widgets/tests.py +++ b/tests/regressiontests/admin_widgets/tests.py @@ -644,12 +644,14 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas self.selenium.get( '%s%s' % (self.live_server_url, '/admin_widgets/school/%s/' % self.school.id)) + self.wait_page_loaded() self.execute_basic_operations('vertical', 'students') self.execute_basic_operations('horizontal', 'alumni') # Save and check that everything is properly stored in the database --- self.selenium.find_element_by_xpath('//input[@value="Save"]').click() - self.school = models.School.objects.get(id=self.school.id) # Reload from database + self.wait_page_loaded() + self.school = models.School.objects.get(id=self.school.id) # Reload from database self.assertEqual(list(self.school.students.all()), [self.arthur, self.cliff, self.jason, self.john]) self.assertEqual(list(self.school.alumni.all()), @@ -728,6 +730,7 @@ class HorizontalVerticalFilterSeleniumFirefoxTests(AdminSeleniumWebDriverTestCas # Save and check that everything is properly stored in the database --- self.selenium.find_element_by_xpath('//input[@value="Save"]').click() + self.wait_page_loaded() self.school = models.School.objects.get(id=self.school.id) # Reload from database self.assertEqual(list(self.school.students.all()), [self.jason, self.peter])