Daily Life of BlueRose

컴퓨터 & 코딩 공부/파이썬

파이썬 웹자동화 - 자바스크립트 활용 및 PyAutoGui 사용법

푸른로즈 2024. 4. 19. 16:11
728x90

여는 글

앞서 언급했듯 셀레늄에서 CSS_Selector로 선택하기 어려운 개체는 결국 자바스크립트를 사용하게 됩니다.

 

아울러, 홈페이지내 구축되어있는 자바스크립트를 직접 사용해야 하거나, Return값을 받아야 하는 등 Seleinium만으로는 처리하기 어려운 경우도 종종 있는편이죠. 방법을 알아두면 접근법이 상당히 늘어나니 간단하게라도 알아두는 편이 좋습니다.

 

PyAutoGui는 셀레늄을 이용하여 웹업무를 자동화 할 때, 빼놓을 수 없는 라이브러리이다. 마우스로 특정 개체를 선택하고, 키보드 입력을 전달하는 등 핵심적인 기능을 수행하다보니 셀레늄과 항상 같이 붙어다니는 편입니다. 그 외에도 파일 불러오기 창을 여는 등 여러 기능이 있으니 배워두면 추후 기성 어플리케이션의 형태로 만드는데 tkinter와 함께 꽤 도움을 받을 수 있을것으로 보입니다.

 

셀레늄에서의 자바스크립트 사용방법

  1. 셀레늄 JS 실행명령어 : driver.execute_script(""“스크립트”"")
  2. 주요하게 사용되는 자바스크립트 예시
    • 하위개체의 수 세기 : document.getElementById(“아이디”).childElementCount
    • 드롭박스의 옵션 선택하기 : document.getElementById(“아이디”).selectedIndex = “0”
    • Return 값 받기 : execute_script(""“return 스크립트”""). return 없이 스크립트를 실행하면 반환값을 받지 못한다.

PyAutoGui 사용법

설치

‘pip install pyautogui’ 을 파이썬 콘솔에서 실행하여 설치한다.

기능1 - 마우스 조작

  • 이동
    • 현재 마우스의 위치 측정 : pyautogui.position()
    • 절대 좌표값에 따라 마우스 이동 : pyautogui.moveTo(X, Y, t) / X, Y - 좌표, t - 소요시간
    • 현 지점 기준 상대적 위치로 마우스 이동 : pyautogui.moveRel(X, Y, t) - 시간을 비워두면 즉각 이동. 보통 t값은 랜덤함수를 입력하여 로봇에 의한 추적을 방지함.
  • 클릭
    • 클릭 : pyautogui.click(clicks = 2, inteval = 2) = 현재 위치 / 특정 개체에서 클릭 실시. 횟수와 간격을 조절가능
    • 더블클릭 : pyautogui.doubleclick()
    • 특정 지점까지 드래그 : pyautogui.dragTo(X, Y, button=‘left’)
    • 현재 위치 기준 상대위치로 드래그 : pyautogui.drag(X, Y, t, button=‘right’) / X, Y값을 상대적인 값으로 입력하며, t초에 걸쳐 이동함
728x90

 

기능2- 키보드 조작

  • pyautogui.typewriter(‘키 이름 혹은 String’) : 'Enter’나 ‘a’, ‘b’, 'c’등은 엔터, a, b, c를 입력하는 효과를 보인다.
  • i = pyautogui.locateOnScreen(‘img.png’) : 특정 이미지의 화면상 위치를 찾아냄
    • 결과값은 (X위치, Y위치, X크기, Y크기)의 형태로 반납된다.
    • 이 함수는 openCV의 설치를 필요로 함(import는 필요없음/pip install opencv-python으로 설치가능)

기능3 - 찾기/참조

  • q = pyautogui.center(i) : i개체(변수)의 크기/위치상 중앙부위 좌표값을 변수로 할당한다
  • i = pyautogui.locateCenterOnScreen(‘img.png’) : 3, 4번과정 대신, 이미지를 화면에서 찾고, 해당이미지의 중앙부위에 마우스를 위치시킨다.
  • pyautogui.screenshot(‘저장할 파일명.확장자’, region=(X좌표, Y좌표, X크기, Y크기) : 지정된 위치에서 일정 크기의 이미지를 잘라내어 특정 파일명 및 확장자로 저장한다.

기능4 - 메시지 박스

  • 경고창 : pyautogui.alert(text=’’, title=’’, button=‘확인’) - ‘확인’버튼을 가진 경고창을 출력
  • 버튼 선택창 : pyautogui.confirm(text=’’, title=’’, buttons=[‘확인’, ‘취소’]) - ‘확인’, ‘취소’ 버튼을 가진 선택창을 출력. 선택된 버튼을 String으로 반환함
  • 텍스트 입력창 : pyautogui.prompt(text=’’, title=’’, default=’’) - ‘확인’, ‘취소’ 버튼 및 입력공간을 가진 텍스트 입력창을 출력. 입력된 텍스트를 반환하나, 취소버튼을 누른경우에는 none을 반환함
  • 비밀번호 입력창 : pyautogui.prompt(text=’’, title=’’, default=’’, mask=’*’) - ‘확인’, ‘취소’ 버튼 및 입력공간을 가진 텍스트 입력창을 출력. 비밀번호를 마스킹할 수 있고, 입력된 텍스트를 반환하나, 취소버튼을 누른경우에는 none을 반환함
반응형