윈도우에서 사용이 가능하고 자동화 할수 있는 프리웨어 프로그램을 찾던 중 AutoIT 프로그램을 찾게 되었다. 처음에는 간단한 윈도우 프로그램 정도를 만들수 있는 줄 알았는데, 왠만한 윈도우 프로그램을 다 자동화 할 수 있을 정도의 막강한 기능을 가지고 있었다. 약간 낮은 레벨의 RPA도구 역할을 할 수 있는 것 같았다. 이 외에도 수많은 기능들을 제공하기에 조금만 공부하면 사용할 수 있는 분야가 많을 것 같다.
AutoIT로 할수 있는 것들을 찾아보니 레지스트리를 관리 할수 있는 함수들이 제공되었고, webdriver와 연동을 할 경우 웹브라우저와 연동하고 필요한 링크들을 클릭할 수도 있고, 텍스트 입력도 가능하였다.
예를들어 GMarket의 출석을 자동화하여 아침 10시에 사이트에 접속하여 출첵 페이지로 들어가서 버튼을 클릭하여 포인트를 자동으로 획득하고 웹브라우저를 종료하는 프로그램 작성이 가능하다. 또한 모니터링하는 사이트가 있다면 페이지에 접속하여 특정 텍스트를 읽어와서 저장하여 메일을 발송하는 것도 가능하다.
관심있는 분야는 웹테스팅 분야인데, 이 도구를 적절하게 잘 활용한다며 무한 반복가능한 웹테스팅도 가능하리라는 생각이 들었다.
GMarket의 자동출첵 스크립트 샘플예제
웹브라우저를 자동화하기 위해서는 브라우저 종류에 맞는 webdriver 실행화일을 다운로드 받아야 하고, webdriver을 관리하기 위한 autoit 플러그인도 몇 개 설치가 되어야 한다.
#include <MsgBoxConstants.au3>
#include "wd_capabilities.au3"
#include "wd_helper.au3"
; 환경설정
_WD_CapabilitiesStartup()
_WD_CapabilitiesAdd("AlwaysMatch")
_WD_CapabilitiesAdd("acceptInsecureCerts", True)
_WD_CapabilitiesAdd("firstMatch", "chrome")
_WD_CapabilitiesAdd("w3c", True)
_WD_CapabilitiesAdd("prefs", "download.defult_directory", @ScriptDir & "\Downloads")
_WD_CapabilitiesAdd("excludeSwitches", "enable-automation")
;_WD_CapabilitiesDump(@ScriptLineNumber & " Testing")
Local $sCapabilities = _WD_CapabilitiesGet()
_WD_Option("Driver", @ScriptDir & "\chromedriver.exe")
_WD_Option("Port" , 9515)
_WD_Option("DefaultTimeout", 1000)
_WD_Option("DriverParams", "--log-path=" & Chr(34) & @ScriptDir & "\WebDriver_Testing.log" & Chr(34))
;WebDriver 시작
_WD_Startup()
_WD_ConsoleVisible(false);
;Chrome 창 최대크기로 열기
Local $WD_SESSION = _WD_CreateSession($sCapabilities)
_WD_Window($WD_SESSION, "MAXIMIZE")
;로그인 페이지로 이동
_WD_Navigate($WD_SESSION, "https://signinssl.gmarket.co.kr/login/login?url=https://www.gmarket.co.kr/")
_WD_LoadWait($WD_SESSION, 1000)
; 아이피 패스워드 입력
$obj = _WD_GetElementById($WD_SESSION,"id")
_WD_SetElementValue($WD_SESSION,$obj,"---------")
$obj = _WD_GetElementById($WD_SESSION,"pwd")
_WD_SetElementValue($WD_SESSION,$obj,"----------")
; 로그인 버튼 클릭
$obj = _WD_FindElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='mem_login']/div[1]/div[3]/button")
_WD_ElementAction($WD_SESSION,$obj, "CLICK")
_WD_WaitElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='desktop_layout-header']/div/div/div[2]/div[2]/ul/li[3]/a")
$obj = _WD_FindElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='desktop_layout-header']/div/div/div[2]/div[2]/ul/li[3]/a")
_WD_ElementAction($WD_SESSION,$obj, "CLICK")
_WD_WaitElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='event_main']/div/a")
$obj = _WD_FindElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='event_main']/div/a")
_WD_ElementAction($WD_SESSION,$obj, "CLICK")
$obj = _WD_GetElementById($WD_SESSION,"AttendRulletFrame")
_WD_FrameEnter($WD_SESSION,$obj)
_WD_WaitElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='wrapper']/a")
$obj = _WD_FindElement($WD_SESSION,$_WD_LOCATOR_ByXPath, "//*[@id='wrapper']/a")
_WD_ElementAction($WD_SESSION,$obj, "CLICK")
_WD_LoadWait($WD_SESSION, 3000)
_WD_DeleteSession($WD_SESSION)
_WD_Shutdown()
'Software > Automation' 카테고리의 다른 글
AutoIt 웹자동화를 위한 환경설정 및 코딩방법 (0) | 2022.06.01 |
---|