def test_generate_user_media_image_path_by_random_name(self): file_path = generate_user_media_image_path(name='exists', prefix='unittest') file_path = os.path.join(settings.MEDIA_ROOT, file_path) self.assertTrue(os.path.exists(file_path)) file_path2 = generate_user_media_image_path(name='exists', prefix='unittest') file_path2 = os.path.join(settings.MEDIA_ROOT, file_path2) self.assertTrue(os.path.exists(file_path2)) self.assertNotEqual(file_path, file_path2) os.remove(file_path) os.remove(file_path2)
def do_login(self): """ Go to weibo login page input username and password to login. """ username_selector = '#pl_login_form input[name="username"]' password_selector = '#pl_login_form input[name="password"]' remember_password_selector = '#login_form_savestate' submit_selecotr = '#pl_login_form .login_btn a' account_login_type_selector = 'a[node-type="normal_tab"]' self.get(self.login_page_url) # make form visible username_input = self.find_element(username_selector) if not username_input.is_displayed(): self.find_element_visible_and_clickable(account_login_type_selector).click() self.find_element_visible_and_clickable(username_selector) self.fill_input(username_input, settings.SINA_WEIBO_USERNAME) self.fill_input(self.find_element(password_selector), settings.SINA_WEIBO_PASSWORD) self.select_checkbox(self.find_element(remember_password_selector)) self.find_element_visible_and_clickable(submit_selecotr).click() # wait for iframe do login complete # TODO: need make a better way to check login response returned sleep(3) if self.browser.current_url.startswith(settings.SINA_WEIBO_LOGIN_REDIRECT_PAGE): self.login_success = True else: file_path = os.path.join(settings.MEDIA_ROOT, utils.generate_user_media_image_path(prefix='error')) self.browser.save_screenshot(file_path) logger.error('WeiboCaptureService.do_login failed, please check screen shot file:' + file_path)
def form_valid(self, form): """ When form valid, save it to view """ url = form.cleaned_data['url'] crop_feed = form.cleaned_data['crop_feed'] service = WeiboCaptureService(url, auto_login=True) self.user_media_path = utils.generate_user_media_image_path(name='capture', prefix='weibo') file_path = os.path.join(settings.MEDIA_ROOT, self.user_media_path) try: if crop_feed: service.capture_feed_to_file(file_path) else: service.capture_to_file(file_path) except TimeoutException: logger.warning('WeiboCaptureView.form_valid get TimeoutException') os.remove(file_path) self.user_media_path = settings.DEFAULT_WEIBO_CAPTURE_IMAGE except WeiboNotLoginException: logger.error('WeiboCaptureView.form_valid get WeiboNotLoginException') self.user_media_path = settings.DEFAULT_WEIBO_CAPTURE_IMAGE return super(WeiboCaptureView, self).form_valid(form)
def test_generate_user_media_image_path(self): file_path = generate_user_media_image_path(prefix='unittest') file_path = os.path.join(settings.MEDIA_ROOT, file_path) self.assertTrue(os.path.exists(file_path)) os.remove(file_path)