반응형
Autohotkey 를 사용하여 웹 자동화를 하는 경우 컴포넌트 오브젝트 모델(Component Object Model, COM) 을 사용하여 internet explorer 를 자동화 하곤 했는데~
최근에는 Chrome 을 주로 사용하기도 하고~ Python 에서 selenium 사용을 익히다 보니 Autohotkey 를 통한 웹 자동화에 소홀해 졌었습니다.
그런데 최근 아래 포스팅을 보고 Autohotkey 에서 selenium 을 자동화 할 수 있다는 것을 알게 됐습니다.
간단하게 정리한 과정은 다음과 같습니다.
1. 아래 주소에서 SeleniumBasic 을 다운로드 받고 설치 합니다.
2. SeleniumBasic 설치시
WebDriver 도 설치가 되는데~ 자신의 브라우저 버전과 안 맞아서 정상적으로 동작하지 않는다면 아래 주소에서 Third party software 부분에서 사용하고자 하는 브라우져의 WebDriver 를 설치 합니다.
저는 현재 chrome 을 주로 사용하는데 ~ 과거 버전을 사용하고 있습니다. 그래서 최신 버전의
WebDriver 를 설치하니 정상적으로 동작하지 않더군요. 그래서 아래 주소에서 제 브라우저 버전에 맞는
WebDriver 의 버전이 무엇인지를 확인한 후에~ Chrome WebDriver 를 다운로드 받아서 설치 했습니다.
chrome 의 버전을 확인하고 싶으시면 chrome 의 주소 표시 창에 chrome://help/ 또는 chrome://version/ 이라고 치고 들어가 보시면 확인 할 수 있습니다. 저는 버전 54.0.2840.71 이어서~ ChromeDriver 2.25 버전을 아래 주소에서 다운로드 받았습니다.
다운로드 받고 압축을 푼 후에 SeleniumBasic이 설치된 폴더(Windows 7 : C:\Program Files\SeleniumBasic, Windows 10 : C:\Users\자신의계정\AppData\Local\SeleniumBasic ) 에 chromedriver.exe 파일을 붙여넣기 합니다.
Autohotkey 에서 selenium 을 사용하는 예제 등은 첫 번째 링크의 예제를 확인해 보시기 바랍니다.
저는 다음과 같은 예제를 똑같이 따라 해 보니~
driver:= ComObjCreate("Selenium.CHROMEDriver") ;Chrome driver
driver.Get("http://the-automator.com/")
driver.findElementsByName("s").item[2].SendKeys("hello world")
MsgBox here
다음과 같이 정상적으로 동작하더군요.
Autohotkey 에서 Selenium 사용시의 함수 이름 관련 글 : http://iamaman.tistory.com/2307
반응형
'programming language > Autohotkey' 카테고리의 다른 글
Autohotkey DTW(Dynamic Time Warping) 를 사용한 글자 매칭 (0) | 2018.01.09 |
---|---|
Autohotkey 에서 C# 으로 만들어진 dll 사용하기 (0) | 2017.12.27 |
SciTE4AutoHotkey 의 아웃풋에 텍스트 표시 방법 (0) | 2017.12.08 |
Autohotkey(오토핫키)를 사용하여 창 닫기 (0) | 2017.12.08 |
Autohotkey 에서 selenium 사용 방법 (24) | 2017.10.26 |
Autohotkey COM 을 사용하여 Outlook 으로 메일 보내기 (0) | 2017.08.18 |
Autohotkey 를 사용한 Microsoft Office 수평 스크롤 (26) | 2017.07.28 |
Autohotkey 로 BlueTooth 장치 표시 (3) | 2017.03.10 |
Autohotkey 에서 3개 이상의 키 조합으로 단축키 만들기 (3) | 2017.02.28 |
안녕하세요 작성자님
질문이 있어 글을 남겨봅니다
위 스크립트 종료후에 바로 제어되고 있는 크롬창이 종료 되는데
혹시 크롬창 유지 시켜주는 방법은 없을까요 ?
답글
프로그램이 종료 되기 때문에 크롬창이 꺼지는 것이므로 프로그램이 종료 되지 않게 해 주시면 되지 않을까요?
아래와 같이 해 주니 프로그램이 종료되지 않고 따라서 브라우저도 살아 있네요.
#Persistent
------Autohotkey 스크립트 ------
return
감사합니다.
막힌가슴히 뻥 뚤리네요!
즐거운 하루 되세요 ^^
답글
도움되었다니 다행이네요. 방문해 주셔서 감사합니다. ^^
안녕하세요 작성자님
염치 불구하고 질문좀 드리고자 또 방문드렸습니다..
기존 파이썬으로 Selenium 을 이용하여 웹 자동화를 구성하다가
오토핫키로 다시 해보고 있는데요
driver.find_element_by_link_text("Expand All").click()
위와 같은 파이썬 소스를
driver.find_elementbylinktext("단계별A/S진행등록").click()
위와같이 수정해보았는데 적용이 안되네요..
혹시 방법이 있을까요 ??
파이썬에선 잘 작동했는데 오토핫키는 뭔가 다른가보네요...ㅎ
답글
파이썬이랑 비교하면 함수 이름이 조금씩 다릅니다.
아래 주소글 확인하면 Autohotkey 사용할때의 함수이름을 알 수 있을 거에요.
http://iamaman.tistory.com/2307
Python selenium 은 _(underscore) 로 구분된 함수 이름으로 만들었던데 Autohotkey 에서는 그렇지 않습니다. 예를 들어 질문하신 find_element_by_link_text 함수는 Autohotkey 에서는 FindElementsByLinkText 를 사용하시면 될겁니다.
위 주소의 글 참조하면 다른 함수들 이름에 대해서도 어떻게 쓰는게 맞는건지 확인 할 수 있을 거에요.
코드가 회사 컴에 있어서 지금은 확인이 안되고..
사이트 들어가보니 잘못된 주소이거나 비공개 또는 삭제된 글이라네요 ~
티스토리 계정 있어서 로그인 해봐도 안나오네여 ㅎㅎ
답글
어떤게 삭제 됐다는 건지....? 2307 글 삭제 안 됐는데 ...
ㅎㅎ 죄송합니다
잠결에 쳐서 오타가 있었나봐요
분명 다시 확인했었는데...ㅎ
알려주신대로 일단 해결했습니다.
2307 게시물에서도 참고 하고 공부해보고
잘 모르겠으면 다시 찾아뵙겠습니다
도움 정말 감사합니다!
답글
넵 방문해 주셔서 감사합니다. ^^
셀레늄과 오토핫키를 어떤 경우에 같이 쓰게 되는건가요?
답글
웹 자동화를 하고 싶은 경우 셀레늄 라이브러리를 주로 사용하는데 언어 선택을 Autohotkey 로 한것 뿐입니다. Python 이든 C# 이든 자바든 편하신 언어 사용하시면 됩니다.
안녕하세요 작성자님
게시글 올리신지 오래되서 답변을 해주실지는 모르겠지만
질문이 있어서 댓글남겨요
driver.findElementsByName("s").item[2].sendkeys(hello world) 와같이
웹사이트 내 에있는 editbox에 키입력을하는건 성공을했는데 byname이 없고
Classname&TagName 만 확인되는 버튼은 어떻게 클릭하는지 궁금합니다.
driver.findElementsByClassName("btn").item[1].click() 이런식으로 작성을했는데 안되더군요..
답글
아래 주소 글 확인해보시면 사용가능한 함수 이름을 알수 있는데 FindElementByClass 라는함수를 사용해 보시는게 좋을것 같네요.
https://iamaman.tistory.com/2307
안녕하세요!!
오토핫키에서 셀레니움을 이용하는걸 검색하다가
이 블로그에 방문했습니다.
정리를 깔끔하게 잘 해주서셔...
글 내용대로 했더니.. 설치가 잘되었습니다.
감사합니다.
하나 막히는게 있어서
초면에 질문을 드립니다.
SendKeys(driver.Keys.ENTER)를 사용하고픈데..
이 걸 사용하려면 드라이버를 설치해야 한다고 하더라구요
아무리 검색을 해도
어디서 다운 받아야 하고..설치를 어디에 또 해야하는지를
몰겠더라구요
혹..
주인장님...
아시면 답변 좀 부탁드립니다.
참조] https://the-automator.com/cross-browser-web-scraping-with-autohotkey-and-selenium/
답글
네 위 포스팅 중에 SeleniumBasic 를 설치하면 C:\Program Files\SeleniumBasic\ 폴더에 selenium 드라이버가 설치 됩니다.
그런데 위 포스팅에도 적어 놨지만 요즘 많이들 사용하시는 Chrome 브라우저를 사용한다면 맞는 드라이버를 설치해 줘야 하고 위 포스팅에 어디서 다운로드 받는지 나와 있습니다.
일단 위 코드 맨 마지막에 있는 예제는 제대로 실행이 되나요?
감사합니다! 작성자님 글 보고 SeleniumBasic 으로 웹 자동화 시도하고 있습니다!
그런데 회사 보안 때문에 그러는지 잘못된 접근이 시도되었다고 알림이 뜨면서 창이 꺼집니다.
User-Agent 를 변경하면 될까 싶어서 자료 찾아보는데 못찾겠어요..
래퍼런스 자료 보고 어떻게든 혼자 하려 했는데 혹시 어디서 볼 수 있는지 아실까요? 그리고 User-Agent 변경해도 안되면 어떻게 하면 좋을까요?
답글
User-Agent 설정 방법 등과 관련하여서는 Autohotkey 코드는 아니지만 아래 코드들 참조하여 응용하면 될 것 같습니다.
https://beomi.github.io/2017/09/28/HowToMakeWebCrawler-Headless-Chrome/
https://sjwiq200.tistory.com/11
안녕하세요. 몇일째 검색하다가 못찾아서 여쭙고 싶은 질문이 있어서 글 남깁니다.
selenium으로 페이지 제어를 하다가 iframe을 건드는 일이 생겨서. 검색하여서
driver.SwitchToFrame("프레임명") 으로 driver의 제어프레임을 해당 프레임으로 옮기는 것을 알았습니다.
그런데, 다시 부모프레임(메인프레임)으로 이동하는 방법을 혹시 아시는지요?;;
답글
저는 프레임에 대한 제어를 해보진 않았지만 검색을 해보니
https://www.guru99.com/handling-iframes-selenium.html
위 주소에서 아래와 같은 코드를 발견할 수 있었습니다.
driver.switchTo().parentFrame();
driver.switchTo().defaultContent();
한번 시도해 보시죠~
예제 코드를 입력했더니 driver.findelementByxpath에서 item관련 인덱스 오류가 납니다. 뭐가 문제일까요? 운영자님!?ㅠㅠ
답글
findelementByxpath() 함수가 있는지 확인을 해 봐야 할 것 같네요.
아래 주소 글 참조하여 함수 이름 확인해 보시기 바랍니다.
http://iamaman.tistory.com/2307
관리자의 승인을 기다리고 있는 댓글입니다
답글
관리자의 승인을 기다리고 있는 댓글입니다
답글