def test_teacher_change_an_open_event_162186(self): self.ps.test_updates['name'] = 'tutor_event_teacher' \ + inspect.currentframe().f_code.co_name[4:] self.ps.test_updates['tags'] = ['tutor', 'event', 'teacher', '162186'] self.ps.test_updates['passed'] = False # Test steps and verification assertions assignment_name = 'event_015_%s' % randint(100, 500) assignment = Assignment() today = datetime.date.today() finish = randint(1, 5) begin = today.strftime('%m/%d/%Y') end = (today + datetime.timedelta(days=finish)) \ .strftime('%m/%d/%Y') # Create an open assignment self.teacher.add_assignment(assignment='event', args={ 'title': assignment_name, 'description': 'description', 'periods': { 'all': (begin, end) }, 'status': 'publish', }) # Find the open Event on the calendar self.teacher.wait.until( expect.presence_of_element_located( (By.CLASS_NAME, 'month-wrapper'))) self.teacher.find( By.XPATH, '//label[contains(text(),"{0}")]'.format(assignment_name)).click() self.teacher.wait.until( expect.element_to_be_clickable( (By.XPATH, '//a[contains(text(),"View")]'))).click() # Change the title self.teacher.find(By.ID, "reading-title").send_keys("changed") # Change the description self.teacher.find( By.CSS_SELECTOR, ".assignment-description>.form-control").send_keys("changed") # Set new due dates end = randint(1, 5) closes_on = (today + datetime.timedelta(days=end)) \ .strftime('%m/%d/%Y') assignment.assign_date(driver=self.teacher.driver, date=closes_on, is_all=True, target='due') # Publish self.teacher.find(By.XPATH, '//button[contains(@class,"-publish")]').click() sleep(1) # Find the new title on the calendar try: self.teacher.find( By.XPATH, '//label[contains(text(),"{0}")]'.format(assignment_name + 'changed')) except NoSuchElementException: self.teacher.find( By.XPATH, '//a[contains(@class,"header-control next")]').click() self.teacher.find( By.XPATH, '//label[contains(text(),"{0}")]'.format(assignment_name + 'changed')) self.ps.test_updates['passed'] = True
def __init__(self, username, password, site='https://tutor-qa.openstax.org', email=None, email_username=None, email_password=None, driver_type='chrome', capabilities=None, pasta_user=None, wait_time=DEFAULT_WAIT_TIME, opera_driver='', existing_driver=None, **kwargs): """ Base user constructor. username (string): website username password (string): website password site (string): website URL driver_type (string): web browser type pasta_user (PastaSauce): optional API access for saucelabs capabilities (dict): browser settings; copy object to avoid overwrite Defaults: DesiredCapabilities.ANDROID.copy() DesiredCapabilities.CHROME.copy() DesiredCapabilities.EDGE.copy() DesiredCapabilities.FIREFOX.copy() DesiredCapabilities.HTMLUNIT.copy() DesiredCapabilities.HTMLUNITWITHJS.copy() DesiredCapabilities.INTERNETEXPLORER.copy() DesiredCapabilities.IPAD.copy() DesiredCapabilities.IPHONE.copy() DesiredCapabilities.ORERA.copy() DesiredCapabilities.PHANTOMJS.copy() DesiredCapabilities.SAFARI.copy() Keys: platform browserName version javascriptEnabled wait (int): standard time, in seconds, to wait for Selenium commands opera_driver (string): Chromium location """ self.username = username self.password = password parse = list( urlparse( site if urlparse(site).scheme else '%s%s' % ('//', site) ) ) parse[0] = b'https' for index, value in enumerate(parse): parse[index] = value.decode('utf-8') if isinstance(value, bytes) \ else value parse = ParseResult(*parse) self.url = parse.geturl() self.email = email self.email_username = email_username self.email_password = email_password self.assign = Assignment() super(User, self).__init__(driver_type=driver_type, capabilities=capabilities, pasta_user=pasta_user, wait_time=wait_time, opera_driver=opera_driver, existing_driver=existing_driver, **kwargs)