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
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
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