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)
示例#3
0
 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)