Memo/Python
-
[Selenium] 결과 값 텍스트가 빈칸(공백)으로 리턴될 때Memo/Python 2023. 1. 18. 17:38
Selenium으로 크롤링 도중 특정 페이지에서만 요소의 결과 값이 빈칸(공백)으로 반환되는 문제가 발생하였다. 별짓을 해보아도 계속해서 되돌아오는건 빈칸이였다.. 또 한참 검색을 해본 결과 beautifulsoup과 함께 사용하면 문제를 해결할 수 있다는 글이 있었지만, 나는 selenium으로만 사용하여 문제를 해결하고 싶어 계속해서 폭풍 검색을 하였다. 결국 우리의 stackoverflow에서 해결 방법을 찾을 수 있었다. element.get_attribute("innerText") 요소의 DOM에 존재하는 텍스트를 가져오는 방법으로 해결할 수 있었다. getText() method of selenium chrome driver sometimes returns an empty string I ha..
-
[Selenium] 코드 실행 후 브라우저가 자동으로 종료될 때Memo/Python 2023. 1. 17. 19:12
이전에는 그러지 않았는데 언젠가 부터 selenium 코드가 전부 실행되고, close나 quit 명령을 주지도 않았는데 자동으로 꺼지는 현상이 생겼다. 검색결과 vscode 환경에서의 문제?라고 하던데 나의 경우 driver 옵션 하나를 추가해서 해결할 수 있었다. options = webdriver.ChromeOptions() options.add_experimental_option("detach", True) selenium 사용 중 브라우저 종료 하고 싶지 않을 때 python으로 브라우저 컨트롤시에 selenium를 이용해서 컨트롤하는 경우 드라이버 생성을 특정함수 안에서 하게 되면 함수가 종료될때 브라우저도 같이 종료되는데, 가끔 종료되지 않았으면 할때 아 capas.tistory.com
-
[Selenium] 클릭 시 element not interactable 에러Memo/Python 2023. 1. 17. 16:50
Selenium으로 코드를 작성 중 창을 닫기 위해 x버튼을 클릭해야 하는 상황이였다. 분명 다른 요소와 동일하게 'button' 태그를 가지고 있지만 다음과 같은 에러가 발생하며 클릭이 작동하지 않았다. Message: element not interactable 다행히 검색을 통해 해결 방법을 쉽게 찾을 수 있었다. close = driver.find_element(By.XPATH, '//*[@id="btnLayerClose"]') driver.execute_script("arguments[0].click();", close) Selenium에서 특정 element가 갑자기 클릭이 되지 않을 때 (python) selenium을 이용해서 functional test를 쨔는 도중, 특정 element를..
-
[Python-Telegram-Bot v20.0] 메시지 전송 에러 해결Memo/Python 2023. 1. 13. 16:52
- 23.02.13 파이썬에서 텔레그램 메시지를 보내려면 json을 이용해 api로 전송하는 것을 추천드립니다. 공식 문서를 지원할 뿐만 아니라, 더욱 간결하고 에러 문제가 없습니다. https://l22hs.tistory.com/31 파이썬을 이용해 텔레그램 메시지를 전송하고 싶어, 여느때와 같이 구글링을 시작하였다. 블로그에 친절하게 잘 정리된 글을 보고 'Python-Telegram-Bot' 패키지를 설치하였다. 그러나 블로그에서 알려준 코드대로 작성해보았지만 계속해서 오류가 발생하였다. # Error RuntimeWarning: coroutine 'Bot.send_message' was never awaited 여러 국내 블로그 자료를 뒤져보고, 계속 수정도 해봤지만 끝내 오류가 해결되지 않았다...
-
[Django] allauth form field label 지우기Memo/Python 2022. 8. 5. 16:17
Django allauth 라이브러리를 이용한 로그인 기능을 구현하던 중 못생긴 로그인 페이지를 수정하게 되었다. 부트스트랩 템플릿을 입히는 과정까지는 문제가 없었으나, ID와 PW를 입력하는 TextField에 'Username: '과 'Password: '라는 label이 따로 붙어 마음에 들지 않았다. 약 한 시간 정도 검색해본 결과 많은 방법들과 코드들이 있었지만 왠지 모르게 잘 적용되지 않았다. 결국 이것 저것 하나씩 해보다 보니 forms.py에 아래와 같은 클래스를 추가하면 몬생긴 label을 지울 수 있었다. class LoginForm(LoginForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) sel..