def test(self): # Setup driver = WebDriver() db = {'plane': [], 'crew': [], 'flight': []} for i in range(5): a = Airplane(registerNumber=i + 10000, places=20) a.save() db['plane'].append(a) b = AirplaneCrew(captainsName="X{}".format(i + 10000), captainsSurname="Z{}".format(i + 1)) b.save() db['crew'].append(b) db['flight'].append(Flight.objects.create(startAirport="A", endAirport="B", airplane=a, crew=b, startTime=self.date, endTime=self.date + timedelta(hours=4))) User.objects.create_user(username='******', password='******') # Log in driver.get("{}/".format(self.live_server_url)) driver.find_element_by_id("login_dropdown").click() driver.find_element_by_id("login_username").send_keys("d") driver.find_element_by_id("login_password").send_keys("d") driver.find_element_by_id("login_button").click() # Buying ticket driver.get("{}/flight/1".format(self.live_server_url)) driver.find_element_by_id("name").send_keys("A") driver.find_element_by_id("surname").send_keys("B") driver.find_element_by_id("buy_ticket_button").click() # Check if bought correctly counter = 0 expected_results = ["A", "B", "1"] for td in driver.find_elements_by_tag_name("td"): self.assertEqual(td.text, expected_results[counter]) counter += 1 # Assigning incorrect crews driver.get("{}/static/crews.html".format(self.live_server_url)) driver.find_element_by_id("change_crew_assignment").click() Select(driver.find_element_by_id("flight_select")).select_by_index(1) driver.find_element_by_id("change_crew_assignment").click() try: WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "error_alert")) ) finally: error_message = "Error - couldn't assign crew! You have to be logged in!" self.assertEqual(driver.find_element_by_class_name("alert").text, error_message) driver.close()
class EntrySeleleniumTests(StaticLiveServerTestCase): """Selenium tests for the entry form""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if not settings.DEBUG: settings.DEBUG = True def setUp(self): """Handles login and things""" call_command('flush', interactive=False, verbosity=0) # Clears db call_command('loaddata', 'groups', commit=False, verbosity=0) call_command('loaddata', 'school', commit=False, verbosity=0) call_command('loaddata', 'permissions', commit=False, verbosity=0) call_command('loaddata', 'auth_users', commit=False, verbosity=0) call_command('loaddata', 'student', commit=False, verbosity=0) call_command('loaddata', 'advisor', commit=False, verbosity=0) call_command('loaddata', 'coordinator', commit=False, verbosity=0) call_command('loaddata', 'activityoptions', commit=False, verbosity=0) call_command('loaddata', 'learningobjectiveoptions', commit=False, verbosity=0) call_command('loaddata', 'sample_entries', commit=False, verbosity=0) self.selenium = WebDriver() self.selenium.set_window_size(1024, 800) self.selenium.get('{0}/{1}'.format(self.live_server_url, '')) self.selenium.find_element_by_xpath('//*[@id="djHideToolBarButton"]').click() self.selenium.implicitly_wait(10) self.selenium.find_element_by_link_text('Login').click() # Click on the student button in the gateway self.selenium.find_element_by_xpath('/html/body/center/md-content/div/div/div[1]/a').click() self.selenium\ .find_element_by_xpath("//img[@src='/static/journal/activities/img" "/journal_sign.png']") super() def tearDown(self): self.selenium.quit() super() def test_text_entry(self): """Test to ensure that a student can add a text entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) # Insert text entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(entry) # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(entry in box_text) def test_image_entry(self): """Test to ensure that a student can add an image entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[2]').click() entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(entry) # click on the inset image button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.implicitly_wait(10) self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists on the page. self.selenium.find_element_by_xpath("//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']") def test_video_entry(self): """Test to ensure that a student can add a video entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) # Insert video self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[3]').click() entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(entry) # click on the insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.implicitly_wait(10) self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') self.selenium.find_element_by_xpath('//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') def test_image_text_entry(self): """Test to ensure that a student can add image+text entries""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) # Insert text entry = 'I think I will bring my cat out next time with a flower.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(entry) # Insert the image self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[2]').click() image_entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(image_entry) # Click on the insert image button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.implicitly_wait(10) self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure the text is on the entries page box_text = self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(entry in box_text) # Ensure the image is on the entries page self.selenium.find_element_by_xpath("//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']") def test_video_text_entry(self): """Test to ensure that a student can add an text+video entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) # Insert text entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(entry) # Insert video self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[3]').click() video_entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(video_entry) # Click on the insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button')\ .click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a/div')\ .text self.assertTrue(entry in box_text) self.selenium.find_element_by_xpath('//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') def test_text_image_video_entry(self): """Test to ensure that a student can add an text+image+video entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) # Insert text text_entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(text_entry) # Insert image button self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[2]').click() image_entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(image_entry) # Click on the inset image button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[3]').click() video_entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(video_entry) # Click on the insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(text_entry in box_text) self.selenium.find_element_by_xpath("//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']") self.selenium.find_element_by_xpath('//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') def test_delete_entry(self): """Test to ensure that a student can delete an entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue('Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame(self.selenium.find_element_by_id('id_entry_iframe')) # Insert text text_entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(text_entry) # Insert image button self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[2]').click() image_entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(image_entry) # Click on the inset image button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[5]/div[3]/button[3]').click() video_entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(video_entry) # Click on the insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(text_entry in box_text) self.selenium.find_element_by_xpath("//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']") self.selenium.find_element_by_xpath('//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') # Click on the entry that was created self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a').click() # Click on the delete button self.selenium.find_element_by_class_name('btn-danger').click() self.selenium.find_element_by_xpath('//*[@id="delete-modal"]/div/div/div[3]/a').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that the entry created is no longer on the entries page main_text = self.selenium.find_element_by_class_name('main').text # Check for text self.assertFalse(text_entry in main_text) # Check for image image_entry_xpath = "//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']" self.assertFalse(image_entry_xpath in main_text) # Check for video video_entry_xpath = '//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]' self.assertFalse(video_entry_xpath in main_text)
class ReportTest(StaticLiveServerTestCase): def setUp(self): self.selenium = WebDriver() self.user = User.objects.create_superuser( username="******", email="*****@*****.**", password="******", first_name="kossar", last_name="najafi", phone_number="09147898557", account_number="1234567812345678", notification_preference="S") self.user = User.objects.create_user(username="******", email="*****@*****.**", password="******", first_name="kossar", last_name="najafi", phone_number="09147898557", account_number="1234432112344321", notification_preference="S") self.__create_transactions() self.selenium.implicitly_wait(10) self.selenium.get( '%s%s' % (self.live_server_url, '/admin_panel/transactions/1')) def tearDown(self): self.selenium.quit() @staticmethod def __create_transactions(): user_k = User.objects.get(username="******") transaction1 = Transaction(owner=user_k, amount="300", currency="D") transaction1.save() def login(self): user = User.objects.get(username="******") SessionStore = import_module(settings.SESSION_ENGINE).SessionStore session = SessionStore() session[SESSION_KEY] = User.objects.get(username="******").id session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0] session[HASH_SESSION_KEY] = user.get_session_auth_hash() session.save() cookie = { 'name': settings.SESSION_COOKIE_NAME, 'value': session.session_key, 'path': '/', } self.selenium.add_cookie(cookie) self.selenium.refresh() self.selenium.get( '%s%s' % (self.live_server_url, '/admin_panel/transactions/1')) def __get_page(self): class ReportPage(object): def __init__(self, selenium): self.selenium = selenium self.comment = self.selenium.find_element_by_id('id_comment') self.selenium.execute_script( "window.scrollTo(0, document.body.scrollHeight);") self.button = self.selenium.find_element_by_xpath( "//button[@type='submit']") return ReportPage(self.selenium) @staticmethod def __send_keys_scrolling(input_element, keys): _ = input_element.location_once_scrolled_into_view time.sleep(1) input_element.send_keys(keys) def _fill(self, page): self.__send_keys_scrolling(page.comment, 'suspicious') def test_successful_report(self): self.login() page = self.__get_page() self._fill(page) page.button.click() self.selenium.get( '%s%s' % (self.live_server_url, '/admin_panel/transactions/1')) p = self.selenium.find_elements_by_tag_name('p') self.assertEqual(len(p), 0) @staticmethod def __get_text(element): return element.get_attribute('textContent')
class RegistrationTest(StaticLiveServerTestCase): fixtures = ['user_testdata.json'] def setUp(self): self.selenium = WebDriver() self.selenium.implicitly_wait(10) self.selenium.get('%s%s' % (self.live_server_url, '/account/registration/')) def tearDown(self): self.selenium.quit() pass def __get_page(self): class RegistrationPage(object): def __init__(self, selenium): self.selenium = selenium self.username = self.selenium.find_element_by_id('id_username') self.first_name = self.selenium.find_element_by_id( 'id_first_name') self.last_name = self.selenium.find_element_by_id( 'id_last_name') self.email = self.selenium.find_element_by_id('id_email') self.phone_number = self.selenium.find_element_by_id( 'id_phone_number') self.password1 = self.selenium.find_element_by_id( 'id_password1') self.password2 = self.selenium.find_element_by_id( 'id_password2') self.account_number = self.selenium.find_element_by_id( 'id_account_number') self.notification = Select( self.selenium.find_element_by_id( 'id_notification_preference')) self.button = self.selenium.find_element_by_xpath( "//button[@class='btn btn-primary']") return RegistrationPage(self.selenium) def check_user_creation(self): entries = User.objects.filter(first_name="soroush") self.assertEqual(entries[0].last_name, "ebadian") @staticmethod def _fill(page): page.username.send_keys('soroush_divar') page.first_name.send_keys('soroush') page.last_name.send_keys('ebadian') page.email.send_keys('*****@*****.**') page.phone_number.send_keys('09147898557') page.password1.send_keys('ihatemakinguppasswords') page.password2.send_keys('ihatemakinguppasswords') page.account_number.send_keys('5678123456781234') page.notification.select_by_visible_text('sms') def test_successful_registration(self): page = self.__get_page() self._fill(page) page.button.click() WebDriverWait( self.selenium, 10).until(lambda driver: driver.find_element_by_tag_name('body')) self.check_user_creation() @staticmethod def __get_text(element): return element.get_attribute('textContent') def test_empty_parts_registration(self): page = self.__get_page() fields = [ page.username, page.password1, page.password2, page.account_number ] self._fill(page) for field in fields: prev_text = self.__get_text(field) field.clear() page.button.click() _ = self.selenium.find_element_by_id("id_phone_number") field.send_keys(prev_text) def test_already_existing_user(self): page = self.__get_page() self._fill(page) page.username.clear() page.username.send_keys('test') page.button.click() error = self.selenium.find_elements_by_tag_name('span') self.assertEqual(self.__get_text(error[0]), "A user with that username already exists.")
class EntrySeleleniumTests(StaticLiveServerTestCase): """Selenium tests for the entry form""" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if not settings.DEBUG: settings.DEBUG = True def setUp(self): """Handles login and things""" call_command('flush', interactive=False, verbosity=0) # Clears db call_command('loaddata', 'groups', commit=False, verbosity=0) call_command('loaddata', 'school', commit=False, verbosity=0) call_command('loaddata', 'permissions', commit=False, verbosity=0) call_command('loaddata', 'auth_users', commit=False, verbosity=0) call_command('loaddata', 'student', commit=False, verbosity=0) call_command('loaddata', 'advisor', commit=False, verbosity=0) call_command('loaddata', 'coordinator', commit=False, verbosity=0) call_command('loaddata', 'activityoptions', commit=False, verbosity=0) call_command('loaddata', 'learningobjectiveoptions', commit=False, verbosity=0) call_command('loaddata', 'sample_entries', commit=False, verbosity=0) self.selenium = WebDriver() self.selenium.set_window_size(1024, 800) self.selenium.get('{0}/{1}'.format(self.live_server_url, '')) self.selenium.find_element_by_xpath( '//*[@id="djHideToolBarButton"]').click() self.selenium.implicitly_wait(10) self.selenium.find_element_by_link_text('Login').click() # Click on the student button in the gateway self.selenium.find_element_by_xpath( '/html/body/center/md-content/div/div/div[1]/a').click() self.selenium\ .find_element_by_xpath("//img[@src='/static/journal/activities/img" "/journal_sign.png']") super() def tearDown(self): self.selenium.quit() super() def test_text_entry(self): """Test to ensure that a student can add a text entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) # Insert text entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(entry) # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(entry in box_text) def test_image_entry(self): """Test to ensure that a student can add an image entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[2]').click() entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(entry) # click on the inset image button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.implicitly_wait(10) self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists on the page. self.selenium.find_element_by_xpath( "//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']" ) def test_video_entry(self): """Test to ensure that a student can add a video entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) # Insert video self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[3]').click() entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(entry) # click on the insert video button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.implicitly_wait(10) self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') self.selenium.find_element_by_xpath( '//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') def test_image_text_entry(self): """Test to ensure that a student can add image+text entries""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) # Insert text entry = 'I think I will bring my cat out next time with a flower.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(entry) # Insert the image self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[2]').click() image_entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(image_entry) # Click on the insert image button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.implicitly_wait(10) self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure the text is on the entries page box_text = self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(entry in box_text) # Ensure the image is on the entries page self.selenium.find_element_by_xpath( "//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']" ) def test_video_text_entry(self): """Test to ensure that a student can add an text+video entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) # Insert text entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(entry) # Insert video self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[3]').click() video_entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(video_entry) # Click on the insert video button self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button')\ .click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath('/html/body/div[1]/div[2]/div[2]/div[1]/a/div')\ .text self.assertTrue(entry in box_text) self.selenium.find_element_by_xpath( '//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') def test_text_image_video_entry(self): """Test to ensure that a student can add an text+image+video entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) # Insert text text_entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(text_entry) # Insert image button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[2]').click() image_entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(image_entry) # Click on the inset image button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Insert video button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[3]').click() video_entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(video_entry) # Click on the insert video button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(text_entry in box_text) self.selenium.find_element_by_xpath( "//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']" ) self.selenium.find_element_by_xpath( '//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') def test_delete_entry(self): """Test to ensure that a student can delete an entry""" # Click on the first activity box: Walking around the block self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div/div[1]/div/div[3]/a/div').click() self.selenium.find_element_by_link_text('Add an entry').click() # The following has 2 matching: Just walking and Adding entry...block header_text = self.selenium.find_elements_by_tag_name('h3')[1].text self.assertTrue( 'Adding entry for Walking around the block!' in header_text) # Switching to iframe focus self.selenium.switch_to_frame( self.selenium.find_element_by_id('id_entry_iframe')) # Insert text text_entry = 'I think I will bring my cat out next time.' self.selenium.find_element_by_class_name('note-editable')\ .send_keys(text_entry) # Insert image button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[2]').click() image_entry = 'http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/input')\ .send_keys(image_entry) # Click on the inset image button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[1]/div/div/div[3]/button').click() # Insert video button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[5]/div[3]/button[3]').click() video_entry = 'https://www.youtube.com/watch?v=Rk_bV0RJRhs&index=20&list=PLJU_WCB1rA2SFwFy3lEvY_NH23ql1-Cgi' self.selenium.find_element_by_xpath('/html/body/div[2]/div[2]/div[4]/div/div/div[2]/div/input')\ .send_keys(video_entry) # Click on the insert video button self.selenium.find_element_by_xpath( '/html/body/div[2]/div[2]/div[4]/div/div/div[3]/button').click() # Switch back out of the iframe. self.selenium.switch_to_default_content() # Click on the submit button self.selenium.find_element_by_class_name('btn-success').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that entry exists as the first box on the page. box_text = self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div[2]/div[1]/a/div').text self.assertTrue(text_entry in box_text) self.selenium.find_element_by_xpath( "//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']" ) self.selenium.find_element_by_xpath( '//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]') # Click on the entry that was created self.selenium.find_element_by_xpath( '/html/body/div[1]/div[2]/div[2]/div[1]/a').click() # Click on the delete button self.selenium.find_element_by_class_name('btn-danger').click() self.selenium.find_element_by_xpath( '//*[@id="delete-modal"]/div/div/div[3]/a').click() # Ensure that we are back on the entries page. self.selenium.find_element_by_link_text('Add an entry') # Ensure that the entry created is no longer on the entries page main_text = self.selenium.find_element_by_class_name('main').text # Check for text self.assertFalse(text_entry in main_text) # Check for image image_entry_xpath = "//img[@src='http://images.jfdaily.com/jiefang/wenyu/new/201409/W020140919421426345484.jpg']" self.assertFalse(image_entry_xpath in main_text) # Check for video video_entry_xpath = '//iframe[@src="//www.youtube.com/embed/Rk_bV0RJRhs"]' self.assertFalse(video_entry_xpath in main_text)
class ProfessorTest(LiveServerTestCase): def setUp(self): self.browser = WebDriver() self.browser.implicitly_wait(1) create_user_and_login(self.browser, self.live_server_url, 'john', 'johnpassword', '*****@*****.**') self.name_professor = 'teste' def tearDown(self): [professor.delete() for professor in Professor.find()] self.browser.quit() def create_professor(self, professor_name): open_page(self.browser, '/interface/professor', self.live_server_url) button_create_professor = self.browser.find_element_by_name('criar') button_create_professor.click() self.assertIn('Interface - Professor Create', self.browser.title) form_name = self.browser.find_element_by_id('id_name') form_name.send_keys(professor_name) form_memberId = self.browser.find_element_by_id('id_memberId') form_memberId.send_keys('00000') form_office = self.browser.find_element_by_id('id_office') form_office.send_keys('0') form_email = self.browser.find_element_by_id('id_email') form_email.send_keys('0') form_phoneNumber = self.browser.find_element_by_id('id_phoneNumber') form_phoneNumber.send_keys('0') form_cellphoneNumber = self.browser.find_element_by_id( 'id_cellphoneNumber') form_cellphoneNumber.send_keys('0') form_idDepartment = self.browser.find_element_by_id('id_idDepartment') form_idDepartment.send_keys('') button_submit = self.browser.find_element_by_name('Cadastrar') button_submit.click() def test_login_to_interface_page(self): self.assertIn('Index', self.browser.title) link_interface = self.browser.find_element_by_link_text('Interface') link_interface.click() self.assertIn('Interface', self.browser.title) def test_login_to_professor_page(self): open_page(self.browser, '/interface/', self.live_server_url) professor_interface = self.browser.find_element_by_link_text( 'Professor') professor_interface.click() self.assertIn('Interface - Professor', self.browser.title) def test_create_professor(self): self.create_professor(self.name_professor) open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link = self.browser.find_element_by_link_text( self.name_professor) self.assertIsNotNone(professor_name_link) def test_edit_professor(self): professor = Professor(self.name_professor) professor.store() open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link = self.browser.find_element_by_link_text( self.name_professor) professor_name_link.click() self.assertIn('Interface - Professor Detail', self.browser.title) button_edit = self.browser.find_element_by_name('editar') button_edit.click() self.assertIn('Interface - Professor Edit', self.browser.title) form_name = self.browser.find_element_by_id('id_name') form_name.send_keys('Edit') form_memberId = self.browser.find_element_by_id('id_memberId') form_memberId.send_keys('') form_office = self.browser.find_element_by_id('id_office') form_office.send_keys('') form_email = self.browser.find_element_by_id('id_email') form_email.send_keys('') form_phoneNumber = self.browser.find_element_by_id('id_phoneNumber') form_phoneNumber.send_keys('0') form_cellphoneNumber = self.browser.find_element_by_id( 'id_cellphoneNumber') form_cellphoneNumber.send_keys('0') form_idDepartment = self.browser.find_element_by_id('id_idDepartment') form_idDepartment.send_keys('') button_apply = self.browser.find_element_by_name('Aplicar') button_apply.click() open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link_after_edit = self.browser.find_element_by_link_text( self.name_professor + 'Edit') professor_name_link_after_edit.click() list_professor_info = self.browser.find_elements_by_tag_name('p') self.assertEqual(list_professor_info[1].text, 'Member ID: 0') self.assertEqual(list_professor_info[2].text, 'Office: None') self.assertEqual(list_professor_info[3].text, 'Email: None') self.assertEqual(list_professor_info[4].text, 'Phone Number: 0') self.assertEqual(list_professor_info[5].text, 'CellPhone Number: 0') self.assertEqual(list_professor_info[6].text, 'Id Department: None') def test_delete_professor(self): professor = Professor(self.name_professor) professor.store() open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link = self.browser.find_element_by_link_text( self.name_professor) professor_name_link.click() self.assertIn('Interface - Professor Detail', self.browser.title) button_delete = self.browser.find_element_by_name('deletar') button_delete.click() alert = self.browser.switch_to.alert alert.accept() self.assertIn('Interface - Professor', self.browser.title) professor_name_after_delete = self.browser.find_elements_by_tag_name( 'a') names = [link.text for link in professor_name_after_delete] self.assertNotIn(self.name_professor, names)
class ProfessorTest(LiveServerTestCase): def setUp(self): self.browser = WebDriver() self.browser.implicitly_wait(1) create_user_and_login(self.browser, self.live_server_url,'john','johnpassword','*****@*****.**') self.name_professor = 'teste' def tearDown(self): [professor.delete() for professor in Professor.find()] self.browser.quit() def create_professor(self,professor_name): open_page(self.browser, '/interface/professor', self.live_server_url) button_create_professor = self.browser.find_element_by_name('criar') button_create_professor.click() self.assertIn('Interface - Professor Create', self.browser.title) form_name = self.browser.find_element_by_id('id_name') form_name.send_keys(professor_name) form_memberId = self.browser.find_element_by_id('id_memberId') form_memberId.send_keys('00000') form_office = self.browser.find_element_by_id('id_office') form_office.send_keys('0') form_email = self.browser.find_element_by_id('id_email') form_email.send_keys('0') form_phoneNumber = self.browser.find_element_by_id('id_phoneNumber') form_phoneNumber.send_keys('0') form_cellphoneNumber = self.browser.find_element_by_id('id_cellphoneNumber') form_cellphoneNumber.send_keys('0') form_idDepartment = self.browser.find_element_by_id('id_idDepartment') form_idDepartment.send_keys('') button_submit = self.browser.find_element_by_name('Cadastrar') button_submit.click() def test_login_to_interface_page(self): self.assertIn('Index', self.browser.title) link_interface = self.browser.find_element_by_link_text('Interface') link_interface.click() self.assertIn('Interface', self.browser.title) def test_login_to_professor_page(self): open_page(self.browser, '/interface/', self.live_server_url) professor_interface = self.browser.find_element_by_link_text('Professor') professor_interface.click() self.assertIn('Interface - Professor', self.browser.title) def test_create_professor(self): self.create_professor(self.name_professor) open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link = self.browser.find_element_by_link_text(self.name_professor) self.assertIsNotNone(professor_name_link) def test_edit_professor(self): professor = Professor(self.name_professor) professor.store() open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link = self.browser.find_element_by_link_text(self.name_professor) professor_name_link.click() self.assertIn('Interface - Professor Detail', self.browser.title) button_edit = self.browser.find_element_by_name('editar') button_edit.click() self.assertIn('Interface - Professor Edit', self.browser.title) form_name = self.browser.find_element_by_id('id_name') form_name.send_keys('Edit') form_memberId = self.browser.find_element_by_id('id_memberId') form_memberId.send_keys('') form_office = self.browser.find_element_by_id('id_office') form_office.send_keys('') form_email = self.browser.find_element_by_id('id_email') form_email.send_keys('') form_phoneNumber = self.browser.find_element_by_id('id_phoneNumber') form_phoneNumber.send_keys('0') form_cellphoneNumber = self.browser.find_element_by_id('id_cellphoneNumber') form_cellphoneNumber.send_keys('0') form_idDepartment = self.browser.find_element_by_id('id_idDepartment') form_idDepartment.send_keys('') button_apply = self.browser.find_element_by_name('Aplicar') button_apply.click() open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link_after_edit = self.browser.find_element_by_link_text(self.name_professor + 'Edit') professor_name_link_after_edit.click() list_professor_info = self.browser.find_elements_by_tag_name('p') self.assertEqual(list_professor_info[1].text, 'Member ID: 0') self.assertEqual(list_professor_info[2].text, 'Office: None') self.assertEqual(list_professor_info[3].text, 'Email: None') self.assertEqual(list_professor_info[4].text, 'Phone Number: 0') self.assertEqual(list_professor_info[5].text, 'CellPhone Number: 0') self.assertEqual(list_professor_info[6].text, 'Id Department: None') def test_delete_professor(self): professor = Professor(self.name_professor) professor.store() open_page(self.browser, '/interface/professor', self.live_server_url) professor_name_link = self.browser.find_element_by_link_text(self.name_professor) professor_name_link.click() self.assertIn('Interface - Professor Detail', self.browser.title) button_delete = self.browser.find_element_by_name('deletar') button_delete.click() alert = self.browser.switch_to.alert alert.accept() self.assertIn('Interface - Professor', self.browser.title) professor_name_after_delete = self.browser.find_elements_by_tag_name('a') names = [link.text for link in professor_name_after_delete] self.assertNotIn(self.name_professor, names)