Selenium(5)
-
리모트 디버깅 포트 사용중인 크롬 브라우저 여부 확인 방법
Selenium으로 자동화 하는 작업중 특정 remote debugging port로 실행된 브라우저 여부를 확인할 필요가 생겼다.하지만 실행된 브라우저를 찾을 방법이 딱히 떠오르지 않아서 매번 브라우저를 실행하고는 그 포트로 연결해서 작업후 창을 정리하도록 했다. 그랬더니 매번 불필요하게 빈 브라우저가 보였다가 사라지게 되었다. 방법을 고민하던 차에 netstat 명령어가 생각이 나서 문제를 해결할 수 있었다. netstat는 컴퓨터의 네트워크 및 포트에 대한 상태를 확인할 수 있는 명령어다. Remote debugging port로 9222를 지정했는데, 이 포트가 열려 있다면 크롬 브라우저가 실행되어 있는거고 없다면 브라우저를 실행시키면 된다. netstat로 9222 포트가 열려 있는지 확인하는 ..
2024.01.31 -
Selenium chrome 실행시 "Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다." 자동화 메시지 제거
Selenium으로 chrome을 실행하면 "Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다." 라는 팝업이 뜨는데 사용자가 봤을때엔 바이러스나 해킹이라고 생각 할수도 있겠다 싶었다. 찾아보니 chrome이 봇탐지를 하면 나오는 메시지라고 하며 이 정보가 서버로 전달되면 서버에서는 매크로가 돌고 있다고 판단하여 차단을 할 수도 있다고 한다. 이전 포스트에 내용이 있기는 한데, chrome 자체 옵션중 remote-debugging-port를 이용하면 문제를 해결할 수 있다. 절차 PC에 설치된 chrome 실행시 remote-debugging-port 옵션을 이용하여 포트 지정후 실행 Webdriver에 (1)에 사용된 포트로 debuggingAddress를 지정하여 실행 이후 (1)에..
2024.01.26 -
Requests --> Selenium 세션 쿠키 유지
웹사이트에 로그인 후 작업하는 것을 자동화 해야 한다. Selenium으로 로그인하면 되는데, 이 경우 id/ password가 유출될 수 있고 selenium은 post 방식의 api를 지원하지 않는다. 게다가 chrome을 실행해야 하기 때문에 실행 속도가 빠르지도 않다. 그래서 requests로 빠르게 로그인 하고 세션을 유지한채 chrome으로 전환하고 싶었다. 로그인을 유지하려면 세션 쿠키를 유지하면 되는데 쿠키에 대해서는 HTTP 쿠키를 참고하도록 한다. 추가로 쿠키에는 여러가지 attributes가 존재하며 모질라 웹사이트에 가면 attributes에 대해 자세히 알 수 있다. requests --> selenium # requests 로그인 url = 'xxx/login' params = ..
2024.01.26 -
Selenium 프로필 적용 및 창 제어
Selenium으로 자동화를 실행하다 보면 기존 chrome에서 사용하던 프로필을 사용해야 할때가 있다. 이때 chrome 주소창에 chrome://version을 입력하면 프로필이 어디에 있는지 확인할 수 있다. 프로필에 자세한 내용은 아래 링크를 참고하면 된다. User Data Directory Chromium Docs - User Data Directory User Data Directory Introduction The user data directory contains profile data such as history, bookmarks, and cookies, as well as other per-installation local state. Each profile is a subdirec..
2024.01.24 -
셀레늄(Selenium)으로 웹제어
업무 자동화를 하는 과정으로 Chrome 브라우저를 제어해야 할일이 생겼다. 예를 들어 네이버 검색창에 자동으로 텍스트가 입력되고 바로 검색될 수 있도록 할 수 있다. 네이버 검색창에 텍스트 입력 후 검색 코드 설명 from selenium import webdriver from selenium.webdriver.common.by import By if __name__ == '__main__': """ Main """ # 크롬 옵션 생성 chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option('detach', True)# Chrome이 종료되지 않도록 하는 옵션 # 크롬 세션 생성 driver = webdriver..
2024.01.23