LRR/testWithZayid/SeleniumZayid/test_lrr.py

356 lines
13 KiB
Python
Raw Permalink Normal View History

from helper import login, logout
import time
import pytest
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# def test_admin_can_create_lecturer_account(driver, url, admin_username, admin_password, restore_database):
# # Administrator (admin@qq.com, password 123) logs in
# driver.maximize_window()
# login(driver, url, admin_username, admin_password)
# # Create a Lecturer account for Mr Lan (mrlan@qq.com, password [123Abc!])
# tab = driver.find_element(By.ID, 'tab_ins_accounts')
# tab.click()
# elem = driver.find_element(By.NAME, 'fullname')
# elem.send_keys('Mr Lan')
# elem = driver.find_element(By.NAME, 'email')
# elem.send_keys('mrlan@qq.com')
# elem = driver.find_element(By.NAME, 'password')
# elem.send_keys('123Abc!!')
# radio_button = driver.find_element(By.NAME, 'type')
# radio_button.click()
# button = driver.find_element(By.NAME, 'create_btn')
# button.click()
# # Log out Admin account
# logout(driver)
# # Log in Lecturer account
# login(driver, url, 'mrlan@qq.com', '123Abc!!')
# elems = driver.find_elements(By.CLASS_NAME, 'nav-link')
# assert '(Lecturer)' in elems[0].text
# assert 'Mr Lan' in elems[0].text
# driver.quit()
# def test_lecturer_can_create_course(driver, url, restore_database):
# # Lecturer lanhui@qq.com logs in
# driver.maximize_window()
# login(driver, url, 'lanhui@qq.com', '123')
# # Create a course called CSC1001 Advanced Software Engineering, 2024
# elem = driver.find_element(By.NAME, 'name')
# elem.send_keys('Advanced Software Engineering')
# elem = driver.find_element(By.NAME, 'code')
# elem.send_keys('CSC1001')
# elem = driver.find_element(By.NAME, 'academic')
# elem.send_keys('2004')
# elem = driver.find_element(By.NAME, 'faculty')
# elem.send_keys('School of Computer Science and Technology')
# elem = driver.find_element(By.CLASS_NAME, 'btn-primary')
# elem.click()
# elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
# last_elem = elems[-1]
# assert 'Advanced Software Engineering' in last_elem.text
# assert '(CSC1001)' in last_elem.text
# # Logout
# logout(driver)
# driver.quit()
# def test_lecturer_can_post_assignment(driver, url, restore_database):
# # Lecturer lanhui@qq.com logs in
# driver.maximize_window()
# login(driver, url, 'lanhui@qq.com', '123')
# # Create an assignment called Take-home quiz 1 for course (CSC1111) - Project Management
# elem = WebDriverWait(driver, 10).until(
# EC.element_to_be_clickable((By.XPATH, '//div[@class="col-md-8"]/a[1]/div'))
# )
# elem.click()
# # Find and set the deadline date
# elem = driver.find_element(By.NAME, 'deadlinedate')
# elem.send_keys('30/12/2024') # Use ISO format
# # Find and set the deadline time
# elem = driver.find_element(By.NAME, 'deadlinetime')
# elem.send_keys('11:59PM') # Enter time
# elem = driver.find_element(By.NAME, 'title')
# elem.send_keys('Take-home quiz 1')
# elem = driver.find_element(By.NAME, 'instructions')
# elem.send_keys('This is a closed-book quiz.')
# elem = driver.find_element(By.NAME, 'marks')
# elem.send_keys('10')
# radio_button = driver.find_element(By.NAME, 'type')
# radio_button.click()
# elem = driver.find_element(By.CLASS_NAME, 'btn-primary')
# elem.click()
# # Check if the assignment has been successfully posted
# elem = driver.find_element(By.CLASS_NAME, 'card-title')
# assert 'Take-home quiz 1 (10 Marks, Individual)' in elem.text
# elem = driver.find_element(By.CLASS_NAME, 'text-muted')
# assert 'Deadline: 2024-12-30' in elem.text
# driver.quit()
def test_lecturer_can_add_student_numbers(driver, url, restore_database):
# Lecturer lanhui@qq.com logs in
driver.maximize_window()
login(driver, url, 'lanhui@qq.com', '123')
# Add ASE student numbers
student_numbers = '''
202420781739
202420781740
202420781741
202420781742
202420781743
202420781745
202420581366
202420581368
202420581369
202420581370
202420581372
202420581373
202420581374
202420581376
202420581378
202420581381
'''
elem = driver.find_element(By.ID, 'admin_tab')
elem.click()
elem = driver.find_element(By.NAME, 'users')
elem.send_keys(student_numbers)
elem = driver.find_element(By.ID, 'register_btn')
elem.click()
elems = driver.find_elements(By.CSS_SELECTOR, 'p')
added = 0
student_lst = [number.strip() for number in student_numbers.strip().split('\n')]
print(student_lst)
for student_no in student_lst:
for elem in elems:
if student_no in elem.text and 'added' in elem.text:
added += 1
break
assert added == len(student_lst)
driver.quit()
# def test_student_with_valid_student_number_can_sign_up(driver, url, restore_database):
# # Student with recognizable student number 202400000001 can sign up an account
# driver.get(url)
# driver.maximize_window()
# elem = driver.find_element(By.ID, 'signup_link')
# elem.click()
# elem = driver.find_element(By.NAME, 'fullname')
# elem.send_keys('Good Student')
# elem = driver.find_element(By.NAME, 'user_student_id')
# elem.send_keys('202400000001')
# elem = driver.find_element(By.NAME, 'email')
# elem.send_keys('goodstudent@qq.com')
# elem = driver.find_element(By.NAME, 'password')
# elem.send_keys('[123Abc]')
# elem = driver.find_element(By.NAME, 'confirmpassword')
# elem.send_keys('[123Abc]')
# elem = driver.find_element(By.ID, 'signup_btn')
# elem.click()
# logout(driver)
# # Log in Student account
# login(driver, url, '202400000001', '[123Abc]')
# elems = driver.find_elements(By.CLASS_NAME, 'nav-link')
# assert 'Student ID' in elems[0].text
# assert 'Good Student' in elems[0].text
# driver.quit()
# def test_student_with_invalid_student_number_cannot_sign_up(driver, url, restore_database):
# # Student with unrecognizable student number cannot sign up an account
# driver.get(url)
# driver.maximize_window()
# elem = driver.find_element(By.ID, 'signup_link')
# elem.click()
# elem = driver.find_element(By.NAME, 'fullname')
# elem.send_keys('Good Student')
# elem = driver.find_element(By.NAME, 'user_student_id')
# elem.send_keys('202400000002')
# elem = driver.find_element(By.NAME, 'email')
# elem.send_keys('goodstudent@qq.com')
# elem = driver.find_element(By.NAME, 'password')
# elem.send_keys('[123Abc]')
# elem = driver.find_element(By.NAME, 'confirmpassword')
# elem.send_keys('[123Abc]')
# elem = driver.find_element(By.ID, 'signup_btn')
# elem.click()
# # Log in Student account
# login(driver, url, '202400000002', '[123Abc]')
# elems = driver.find_elements(By.CLASS_NAME, 'nav-link')
# assert not 'Student ID' in elems[0].text
# assert not 'Good Student' in elems[0].text
# driver.quit()
# def test_student_with_weak_password_cannot_sign_up(driver, url, restore_database):
# driver.get(url)
# driver.maximize_window()
# weak_password = '123Abc'
# elem = driver.find_element(By.ID, 'signup_link')
# elem.click()
# elem = driver.find_element(By.NAME, 'fullname')
# elem.send_keys('Good Student')
# elem = driver.find_element(By.NAME, 'user_student_id')
# elem.send_keys('202400000001')
# elem = driver.find_element(By.NAME, 'email')
# elem.send_keys('goodstudent@qq.com')
# elem = driver.find_element(By.NAME, 'password')
# elem.send_keys(weak_password)
# elem = driver.find_element(By.NAME, 'confirmpassword')
# elem.send_keys(weak_password)
# elem = driver.find_element(By.ID, 'signup_btn')
# elem.click()
# # Log in Student account
# login(driver, url, '202400000001', weak_password)
# elems = driver.find_elements(By.CLASS_NAME, 'nav-link')
# assert not 'Student ID' in elems[0].text
# assert not 'Good Student' in elems[0].text
# driver.quit()
# def test_student_can_join_course(driver, url, restore_database):
# # Student can join (CSC1111) - Project Management
# login(driver, url, '201825800050', '123')
# driver.maximize_window()
# # Search for CSC1111
# elem = driver.find_element(By.NAME, 'search')
# elem.send_keys('CSC1111')
# elem = driver.find_element(By.CLASS_NAME, 'btn-primary')
# elem.click()
# elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
# assert 'CSC1111' in elems[0].text
# # Join
# elem = driver.find_element(By.CLASS_NAME, 'btn-success') # find the green Join button
# elem.click()
# # Log out, then log in to check the course-joining status
# logout(driver)
# login(driver, url, '201825800050', '123')
# elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
# assert 'CSC1111' in elems[0].text
# assert 'Project Management' in elems[0].text
# assert 'Joined' in elems[0].text
# def test_student_can_submit_assignment(driver, url, restore_database):
# ''' Note: Make sure the fields Posted_Date and Deadline in the second row of lab_reports_table are in the current year'''
# # Student can submit assignment for CSC1111
# login(driver, url, '201825800050', '123')
# driver.maximize_window()
# # Enter into the course and the find the assignment
# elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
# elems[1].click()
# elem = driver.find_element(By.XPATH, '//div[@id="menu1"]/div/div/p/a[text()="Submit"]') # find the submit button
# elem.click()
# # Fill submission title, attach file, and submit
# elem = driver.find_element(By.NAME, 'title')
# elem.send_keys('Assignment submission from Mohamed')
# elem = driver.find_element(By.NAME, 'attachment1')
# elem.send_keys('/home/mrlan/Downloads/test/SeleniumHui/helper.py') # attach a file
# elem = driver.find_element(By.XPATH, '//form/button')
# elem.click()
# # Go the Submitted tab
# elem = driver.find_element(By.ID, 'myTab')
# elems = elem.find_elements(By.CLASS_NAME, 'nav-link')
# elems[2].click()
# elem = driver.find_element(By.XPATH, '//div[@id="menu3"]/div')
# assert 'Reading 2 (6 Marks)' in elem.text
# assert 'SUBMITTED' in elem.text
# assert 'helper.py' in elem.text
# def test_student_can_request_remarking(driver, url, restore_database):
# # Student logs in
# login(driver, url, '201825800050', '123')
# driver.maximize_window()
# # Enter into the course
# elems = driver.find_elements(By.CLASS_NAME, 'btn-default')
# elems[1].click()
# # Go the Marked tab
# elem = driver.find_element(By.ID, 'myTab')
# elems = elem.find_elements(By.CLASS_NAME, 'nav-link')
# elems[3].click()
# # Send remarking request
# remarking_buttons = driver.find_elements(By.CLASS_NAME, 'btn-light')
# remarking_buttons[0].click()
# alert = driver.switch_to.alert
# alert.send_keys('I need higher marks, teacher.')
# alert.accept()
# elem = driver.find_element(By.XPATH, '//div[@id="menu4"]/div/div/p/span')
# assert 'Remarking request sent' == elem.text
# def test_lecturer_can_mark_assignment(driver, url, restore_database):
# # Lecturer lanhui@qq.com logs in
# driver.maximize_window()
# login(driver, url, 'lanhui@qq.com', '123')
# # Enter into the course and the find the assignment
# elem = driver.find_element(By.XPATH, '//div[1]/a[3]/div') # course Software Engineering
# elem.click()
# elem = driver.find_element(By.XPATH, '//div[2]/div[2]/div/a[2]') # View link
# elem.click()
# elem = driver.find_element(By.CLASS_NAME, 'btn-primary') # Blue Mark button
# elem.click()
# # Submit mark and comment
# elem = driver.find_element(By.NAME, 'marks')
# elem.send_keys('1')
# elem = driver.find_element(By.NAME, 'feedback')
# elem.send_keys('Inadequate')
# form = driver.find_element(By.ID, 'submit-form')
# form.submit()
# elem = driver.find_element(By.ID, 'myTab')
# elems = elem.find_elements(By.CLASS_NAME, 'nav-link')
# assert 'Marked submissions (1)' == elems[1].text
# elems[1].click()
# elem = driver.find_element(By.XPATH, "//div[@id='menu2']/div/b")
# assert 'Reading 1 submission' in elem.text
# def test_lecturer_cannot_see_tas_not_from_his_course(driver, url, restore_database):
# # Lecturer lanhui@qq.com logs in
# driver.maximize_window()
# login(driver, url, 'peter@qq.com', '123')
# elem = driver.find_element(By.ID, 'admin_tab')
# elem.click()
# tab = driver.find_element(By.ID, 'existing_accounts_tab')
# tab.click()
# elem = driver.find_element(By.ID, 'tab-existing-accounts')
# assert 'No TA' in elem.text
# # Logout
# logout(driver)
# driver.quit()