Esempio n. 1
0
    def login(self, user_email, user_password):
        self._logger.info('로그인 시도 중..')

        prev_url = self._driver.current_url
        self._driver.find_element_by_name('email').send_keys(user_email)
        self._driver.find_element_by_name('passwd') \
            .send_keys(user_password, Keys.RETURN)

        try:
            self._wait.until(EC_or(
                EC.url_changes(prev_url),
                EC.invisibility_of_element( \
                    (By.CSS_SELECTOR, '.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-front.ui-draggable.ui-resizable'))
            ))
        except:
            self._logger.error('시간이 초과되었습니다')
            self._onerror()
            return None

        url = self._driver.current_url
        if 'timeline' in url:
            self._logger.success('로그인 성공')
            return self
        else:
            self._logger.error('사용자 정보를 확인해주세요')
            self._onerror()
            return None
Esempio n. 2
0
    def login(self, user_email, user_password):
        self._logger.info('로그인 시도 중..')

        prev_url = self._driver.current_url
        try:
            self._driver.find_element_by_name('email').send_keys(user_email)
            self._driver.execute_script(
                'arguments[0].value = "{}"'.format(user_password),
                self._driver.find_element_by_name('passwd'))
            self._driver.find_element_by_name('passwd').send_keys(Keys.RETURN)
        except Exception as e:
            self._logger.error('알 수 없는 오류가 발생했습니다', detail=e)
            self._onerror()
            return None

        time.sleep(3)

        try:
            selectors = [
                '.ui-dialog', '.ui-widget', '.ui-widget-content',
                '.ui-corner-all', '.ui-front', '.ui-draggable', '.ui-resizable'
            ]
            self._wait.until(EC_or(
                EC.url_changes(prev_url),
                EC.invisibility_of_element( \
                    (By.CSS_SELECTOR, ''.join(selectors)))
            ))
        except Exception as e:
            self._logger.error('시간이 초과되었습니다', detail=e)
            self._onerror()
            return None

        url = self._driver.current_url
        if 'timeline' in url:
            self._logger.success('로그인 성공')
            return self
        elif 'pwd' in url.lower():
            # a.next 클릭으로 "다음에 변경하기" 클릭 가능
            # 사용자의 개인정보와 관련되어있기 때문에 직접 조작하도록 함
            self._logger.error('싸이월드에 직접 로그인하여 비밀번호 변경 페이지를 확인한 후 다시 시도해주세요')
            self._onerror()
            return None
        else:
            self._logger.error('사용자 정보를 확인해주세요')
            self._onerror()
            return None
Esempio n. 3
0
    def login(self, user_email, user_password):
        self._logger.info('로그인 시도 중..')

        prev_url = self._driver.current_url
        try:
            self._driver.find_element_by_name('email').send_keys(user_email)
            self._driver.find_element_by_name('passwd') \
                .send_keys(user_password, Keys.RETURN)
        except:
            self._logger.error('알 수 없는 오류가 발생했습니다')
            self._onerror()
            return None

        try:
            self._wait.until(EC_or(
                EC.url_changes(prev_url),
                EC.invisibility_of_element( \
                    (By.CSS_SELECTOR, '.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-front.ui-draggable.ui-resizable'))
            ))
        except:
            self._logger.error('시간이 초과되었습니다')
            self._onerror()
            return None

        url = self._driver.current_url
        if 'timeline' in url:
            self._logger.success('로그인 성공')
            return self
        elif 'pwd' in url.lower():
            # a.next 클릭으로 "다음에 변경하기" 클릭 가능
            # 사용자의 개인정보와 관련되어있기 때문에 직접 조작하도록 함
            self._logger.error('싸이월드에 직접 로그인하여 비밀번호 변경 페이지를 확인한 후 다시 시도해주세요')
            self._onerror()
            return None
        else:
            self._logger.error('사용자 정보를 확인해주세요')
            self._onerror()
            return None