파이썬 자동화 셀레니움(selenium) webdriver와 actionchains으로 웹사이트 매크로 제작
HTML-код
- Опубликовано: 10 ноя 2024
- 파이썬 자동화 프로그램을 위한 selenium(셀레니움) 사용법 강의입니다.
본 영상은 셀레니움의 webdriver와 actionchains를 사용하여 구글 지메일을 자동으로 보내는 프로그램을 만드는 예제입니다.
예제를 통하여 브라우저를 열고, 원하는 문자를 입력하고, 원하는 요소를 찾아 클릭하는 등 웹페이지 매크로를 만들기 위한 셀레니움 사용법을 배웁니다.
간단한 예제지만 이 강의를 통해 거의 모든 웹사이트를 자동화하는 프로그램을 만들 수 있게 됩니다.
파이썬 셀레니움(selenium)은 웹페이지 자동화 프로그램 뿐만 아니라 크롤링에서도 사용할 수 있어 배워두면 유용한 라이브러리입니다.
셀레니움 기초 사용법 브라우저 매크로 프로그램 만들기
• 파이썬 자동화 selenium 사용법 브...
📩 광고, 비즈니스 문의: kimflstudio@gmail.com
강의 내용에 대한 질문은 댓글을 이용해 주세요.
==========
🌐웹 크롤링 강의: inf.run/jX3V
🤖자동화 강의: bit.ly/48NBwkW
💻회원 가입: / @kimfl
➡️프로그래머 김플 스튜디오 : / @kimfl
==========
구글 로그인이 안되는 경우 제가 해답을 드리지 못합니다. 오늘 방금 전(20년 7월 15일 오후 4시경) 영상에서 사용한 구글 아이디로 셀레니움을 사용하여 로그인을 했을때 로그인이 잘 되는걸 확인했습니다. 제 생각 로그인이 안될때는 아이디 문제라고 예상하고 있습니다. 물론 확인할수가 없으니 확실한건 아니고 제 예상일 뿐이죠. 자동로그인은 언제나 위험성이 따르니 무리해서 시도하지 마시고 안되는 분들중 꼭 해보고 싶으시다면 아이디를 새로 만들어서 시도해보시는걸 추천드립니다. 그리고 이 강의는 구글 로그인을 배우는 강의가 아닙니다. 액션체인은 다른 걸로 연습해보시면 됩니다.
------------------------------------------------------------------------------------
reset_action()이 완벽하게 작동 안할경우 코드 중간에
action = ActionChains(driver)를 한번 더 넣어서 action을 완전히 새로 지정하면 됩니다.
셀레니움에서 특히 액션체인이 다루기 까다롭습니다. 셀레니움의 버전에 따라, 사용하는 웹드라이버 종류, 버전에 따라서 작동이 조금씩 다르게 되는경우가 많습니다. 그래서 멀쩡하게 잘 작동하던 프로그램이 셀레니움, 브라우저 등이 버전업될때 이상하게 작동하는 경우가 생깁니다. 그걸 방지하려면 프로그램을 만들때 가상환경으로 버전을 지정해서 만들면 됩니다.
그리고 키입력은 모두의 인터넷 속도나 컴퓨터 환경 등 다양한 부분이 다르기때문에 어디에서는 쉬는시간없이 작동이 되어도 어디에서는 쉬는시간을 지정해줘야 하는 경우가 생깁니다. 키입력에 대한 부분은 각자 만들면서 자신의 환경에 맞게 넣어주시면 됩니다.
네 해당구문 넣어주시 잘 작동하네요 감사합니다!
답글 감사합니다 :) 그런데 예상치 못한 난관에 부딪혔어요 ㅜ
po.ssgadm.com/authentication/login.ssg
여기서 아이디 기재하는 칸이랑 패스워드 기재하는 칸이랑 class 이름이 동일해요 ㅜ 이럴경우에는 어떻게 해야하나요 ?ㅜ
제 경우에는 perform() 빼니까 되네요. 다른 방법으로는 다 안되고..
@@sunwookim9760 class명 하단에 id 명이 다릅니다 id로 넣으시면 될것같아요
혹시 실행파일로는 어떻게 만드나요???
from pywinauto.application import Application
app=Application()
app=Application().Connect(title_re=u'다른 이름으로 저장')
save_as = app.window_(title_re = u'.*다른 이름으로 저장.*')
ctrl = save_as['5']
ctrl.Select()
save_as.Edit.SetText('d:\Downloads\source.txt')
ctrl = save_as['저장(&S)']
ctrl.Click()
성공했습니다...^^
감사합니다.
request post 방식만 되면 최고겠지만 제 수준에선 이것도 그저 감사할 따름입니다.
김플님의 인덱스 번호 찾아내는 코드가 없었다면 아무 의미가 없었을겁니다 진심입니다
다시한번 감사드립니다
성공하셨다니 축하드립니다~^^
마치 쪽집개 강의 같습니다. 짧은 시간이지만 많이 배웠습니다. 고맙습니다.
영상과 댓글덕분에 필요했던 기능을 만들었습니다. 감사합니다~
축하드립니다~^^
Excellent
감사합니다! 실습해보겠습니다.
김플님 덕에 코딩에 관심 갖게 됐어요 😆 감사합니다!
존경스럽네요 어찌 이런걸 다 하시나요 ㅎㅎ 프로그래밍으로 먹고사는 사람은 아니지만 많이 공부해야겠습니다
감사합니다.ㅎㅎ
소문듣고왓습니다
너무나 자세하고 쉽게 알려주셔 감사드립니다. 큰 도움이 되었습니다. 한줄 한줄 받아적으며 노트하며 잘 듣고 있습니다. 구독,좋아요, 모든 알람 신청 합니다! 자주 뵙겠습니다!!
감사합니다~더 좋은 강의로 보답하겠습니다!
아주 좋은 강의입니다. 다만, 현재(2022.08) 구글 웹 브라우저 미지원 오류 때문에 동작하지 않네요. 그래도 액션체인을 이해하고 적용하는 데 충분히 도움이 되는 내용입니다. 감사합니다.
대박이네요..! 진짜 좋은정보감사합니다
감사합니다^^
한번 배워봐야겠네요.
김플님! 안녕하세요 영상보다가 keydown에 대해서 궁금해서 질문드립니다!
왜 shift를 사용할때는 keyup을 다시해주는데 keydown(enter)에서는 keyup을 안해줘도 되는건가요? Keydown이 버튼을 누르고 있는거라고 하셨는데 그렇다면 엔터버튼이 계속 눌려야 하는게 아닌가요? ㅠ
안녕하셍 셀레니움으로 웹페이지 자동화 공부를 해 보는 중에,
김플 스튜디오 님의 강의를 발견하고 따라하고 있습니다.
오래전 영상인지라 질문을 남기는게 조심스럽습니다만..
도무지 해결하지 못 하는 문제가 있어서 갑갑한 마음에 질문 드려 봅니다.
9:39 쯤에 아이디를 입력하고 '다음'을 누르는 부분이 구현되지 않습니다.
소스코드를 보아도 예제와는 형식이 다르고..
그나마 class라고 볼 수 있는건..아래의 값인데,
다음
이 값으로는 다음으로 눌러지지가 않네요..
혹시 이런 경우에는 어떻게 해결을 해야 할까요?
김플님 좋은 강의 너무 감사합니다. !!
감사합니다!
형 사랑해요! 잘봤어요 차근차근 배워볼게요!
좋은 영상 감사합니다.
많이 배워갑니다. 감사합니다!!
To help protect your account, Google doesn’t let you sign in from some browsers; controlled through software automation rather than a human.
구글에서 자동화로는 로그인을 못하게 막아 뒀어요.
파이썬 이제 배우기 시작했는데 뭔가 쉽게 설명하시는것같은데 저는 오류만 뿝는군요 ㅎㅎ 계속해서 배워보고겠습니다 좋은영상 고맙습니다~~
A Class
B Class
C Class
이런 태그가 있을 때, A Class, B Class, C Class 에 대한 텍스트만 어떻게 받아올 수 있을까요?
//div[@aria-label="A Class"] 이런 식으로만 검색해보고 싶은데요..?
강의 정말 잘 보았습니다.! 감사합니다.!
질문이 있는데요..! 파이썬으로 돌리는거랑 구글 웹페이지에 f12켜고 콘솔 모디파이 하는거랑 차이가 있나요??
정말 좋은 정보 감사합니다.
그런데 질문이 있습니다.
셀레니움으로 자동화 실행할때
프로그램을 실행 할때마다 새로운 크롬이 실행 되는건데
한번 실행한 크롬으로 계속 자동화 할수는 없는건가요?
와.. 넘 감사합니다
구독 좋아요
누르고 갑니다.
좋은정보 감사합니다.
구글 로그인까지 따라왔는데 로그인할수 없음이라고 나와 자세히 알아보기 누르니 '사람이 아니라 소프트웨어 자동화를 통해 제어되는 브라우저'는 로그인을 차단할 수 있다고 하네요. 그래서, 아이디 입력후 다음 클릭하면 로그인할수 없다고 나오나 봅니다. 수동으로 해결할 수 있는 방법 있을까요 ?
좋은영상감사합니다
안녕하세요 좋은강좌 감사드립니다
호환되는 버전의 chromedriver을 .py 파일이 있는 폴더에 담고 실행했는데
driver = webdriver.Chrome() 에서 부터 막히더군요
'chromedriver' executable needs to be in PATH. 환경변수탓인가 싶어서 추가를해도 안되고..
'selenium' executable may have wrong permissions. 이런 메세지도 출력이되네요 이건 어떻게 해결하나요?
혹시나 만약 맥북 쓰시면 driver = webdriver.Chrome("./chromedriver") 라고 path 적어주시면 실행하기위해 맥에서 드라이버를 실행시키는데요, 그때 외부에서 다운받은거라 , setting 들어가셔서 privacy 들어가신다음 자물쇠모양 푸시고 외부받은 앱 허용눌러주고 다시 python 실행시키면 작동 됩니다!
강의 너무 재미나게 보고 있습니다.
이번 강의에 구글 로그인 아이디입력하고 다음 클릭하는 것까지 코딩따라 했는데 구글창에
"로그인할수없습니다
브라우저 또는 앱이 안전하지 않을 수 있습니다.
자세히 알아보기
다른 브라우저를 사용해 보세요. 이미 지원되는 브라우저를 사용 중이면 화면을 새로고침한 후 로그인을 다시 시도해 보세요."
라고 뜨네요. 혹시 해결 방법이 있을까요?
하루종일 이부분때문에 막혀서 그런데 click()이부분이 안먹힙니다
자동생성도 안됩니다
인식을 못하는거같은데 어떻게 해결해야되나요
음.. 뭔가 태그 선택을 잘못 하신것 같은데용? 코드를 보면 확실히 알 수 있을 것 같은데..
명강의입니다
감사합니다.
종합선물세트같은 강좌감사합니다.
정말 정말 좋은 강의감사합니다! 하시는 모든 일 잘 되시길 바랍니다!!
Import "selenium" could not be resolved from source
Import "selenium.webdriver.common.keys" could not be resolved from source
Import "selenium.webdriver.common.action_chains" could not be resolved from source
이렇게 세가지 문제가 뜨는데 정작 selenium을 설치하려고 터미널에 pip install selenium을 치면 아래와 같이
Requirement already satisfied라고 뜹니다. 어떻게 고쳐야 되나요?
아이디 넣고 다음 누르면
로그인할 수 없습니다.
브라우저 또는 앱이 안전하지 않을 수 있습니다.
자세히 알아보기
다른 브라우저를 사용해 보세요. 이미 지원되는 브라우저를 사용 중이면 화면을 새로고침한 후 로그인을 다시 시도해 보세요.
위와 같이 나오네요.. 이거 어떻게 처리 해야 할까요.. 찾아보는데 잘 안 찾아지네요.. ㅠㅠ
선생님 잘따라하는중인데 실행을 시켰을때 크롬창이 열렸다가 바로 닫히면서 error reding broker pipe:파이프가 끝났습니다. 라는 오류가 뜨는데 어떻게 해야할까요 크롬드라이버와 크롬버전은 같은걸로 받았습니다
영상에서 너무 쉽게 설명해주셔서 이해하기 좋았습니다!!! ㅎㅎㅎ 하나 궁금한 점이 있는데 action.send_keys('abcd').perform()을 하게되면 로그인창에서 입력될때 abcdabcd와같이 두번 입력되는 경우가 있는데 이는 어떻게 처리해야 하나요?
고정댓글을 참고해주세요.
안녕하세요! 감사히 잘 듣고 있습니다.
그런데 로그인입력 후 다음버튼을 누르는것까지 진행했는데
09:11 처럼 비번입력창으로 진행이 안되네요ㅠ
비번입력창이 안뜨고 하단처럼 오류창이 떠요
찾아보니 크롬이 자동화 테스트 SW에 의해 제어되고 있기 때문에 안되는 것 같은데 다른 방법이 있을까요?
'''
로그인할 수 없습니다.
브라우저 또는 앱이 안전하지 않을 수 있습니다. 자세히 알아보기
다른 브라우저를 사용해 보세요. 이미 지원되는 브라우저를 사용 중이면 화면을 새로고침한 후 로그인을 다시 시도해 보세요.
'''
Google은 사용자의 계정을 안전하게 보호하기 위해 일부 브라우저를 통한 로그인을 허용하지 않고 있습니다. 다음과 같은 브라우저를 사용할 경우 Google에서 로그인을 중지할 수 있습니다.
- 자동화 테스트 프레임워크를 사용하는 브라우저
'''
이메일 입력하고 로그인 클릭까지 했는데 "로그인할 수 없습니다. 브라우저 또는 앱이 안전하지 않을 수 있습니다"라는 창이 뜨고 비밀번호 입력창이 안나오는데 저만 이런가요 ㅜㅜ
ruclips.net/video/HkgDRRWrZKg/видео.html
검색해보니 구글에서 패치 후에 매크로로 자동 로그인을 할 수 없도록 한 것 같습니다
구글, 유튜브로 직접 접속해서 자동 로그인을 할 수는 없는데(브라우저 또는 앱이 안전하지 않을 수 있습니다. 라고 뜹니다)
해당 유튜브 영상에 적혀있는 소스코드를 이용하시면 될 것 같습니다
저도 이 코드를 이용해 접속에 성공하였습니다
Source code:
----------------------------------------------------------------
from selenium import webdriver
from time import sleep
class Google:
def __init__(self,username,password):
self.driver=webdriver.Chrome('C:/Users/Dragan/AppData/Local/chromedriver_win32/chromedriver.exe')
self.driver.get('stackoverflow.com/users/signup?ssrc=head&returnurl=%2fusers%2fstory%2fcurrent%27')
sleep(3)
self.driver.find_element_by_xpath('//*[@id="openid-buttons"]/button[1]').click()
self.driver.find_element_by_xpath('//input[@type="email"]').send_keys(username)
self.driver.find_element_by_xpath('//*[@id="identifierNext"]').click()
sleep(3)
self.driver.find_element_by_xpath('//input[@type="password"]').send_keys(password)
self.driver.find_element_by_xpath('//*[@id="passwordNext"]').click()
sleep(2)
self.driver.get('youtube.com')
sleep(5)
passw=open('New Text Document (2).txt',"r",encoding="utf-8")
password=str(passw.read())
user=open('New Text Document (3).txt',"r",encoding="utf-8")
username=str(user.read())
mylike= Google(username,password)
----------------------------------------------------------------
여기서
New Text Document 는 간단하게 '새 텍스트 문서'라는 뜻이므로
같은 폴더 안에 텍스트 문서(원하는 이름으로)를 만들고
New Text Document (2).txt' 에 해당하는 문서를 만든 뒤에 패스워드를 적어두고 저장.
New Text Document (3).txt 에 해당하는 문서를 만든 뒤에 유저 아이디만 넣고 저장.
소스 코드에서 해당 파일이름만 수정해주시면 정상적으로 구글 아이디로 접속이 가능합니다
self.driver.get('youtube.com')
이 부분을 구글 지메일 접속 도메인으로 바꾼 후에
'mail.google.com/mail/u/0/?tab=wm&ogbl#inbox'
지금 영상의 소스코드를 이용해 본인에게 이메일을 보내도록 코드를 작성하면 될 것 같습니다
@@꿀정보-l1y 이제는 이것도 안되는데 다른 방법이 없을까요?
은행 웹사이트에서 일정 금액을 이체하는 과정도 매크로로 만들 수있나요?? 은행 보안 프로그램등에 중단되거나 진행할수없는 경우도 많은가요? 일정금액을 입력하면 해당계좌에 은행 이체를 해주는 매크로를 만들수 있을까요?
만들어본적이 없어서 모르겠지만..보안프로그램 때문에 쉽게만들지는 못할것 같습니다.
안녕하세요 김플님. 질문하나만 드리려고 합니다. 웹사이트 자동로그인 후 글작성 매크로를 만드는중 다른것은 다 잘 되었는데.. 글 분류 선택 하는 방법을 잘 모르겠습니다.
이해하셨을지 모르겠는데 게시판 글쓰기 할때 글분류, 예를 들어 잡담, 공지, 비밀, 등등 이렇게 선택하여 글쓰기 하는.. 그런데 그 선택하기를 어떤함수로 해야하는지 모르겠습니다.
클릭후 방향키를 아래로 해서 엔터를 치는 방식으로 시도해보려 하였으나.. 클릭까지는 되었는데 방향키 down 이 실행되지 않아서 계속 막히고 있습니다. 혹시 어떤함수를 이용하여 완성해야하는지 알려주시면 감사하겠습니다.
pyautogui 라이브러리로 방향키 아래를 입력하면 되지 않을까요??
좋은 강의 감사합니다.
추가로 궁금한 점은
자동화로 메일을 보낼때 첨부파일을 같이 보내고 싶은데 어떻게 하면 될까요?
첨부파일의 위치는 C:\Users\sw\Pictures에 있는 마지막으로 저장된 사진파일(가장 최근에 저장된 사진파일)입니다.
첨부파일 버튼을 클릭하는 것 까지는 만들겠지만, 첨부파일을 클릭하면 새로운 윈도우 폴더창이 뜨는데 그 뒤로는 어떻게 할지 막막하네요.
감사합니다.
아쉽게도 셀레니움으로 윈도우 폴더창을 다룰 수는 없습니다.
그래서 저는 이런 경우에는 pyperclip 모듈을 사용하여 클립보드에 파일 경로를 저장하고 붙여넣기 하는 방법을 사용합니다.
그리고 이메일을 보내는 것은 smtplib 모듈 사용을 검토해 보시는 걸 추천드립니다.
pyautogui 대신에
pywinauto 를 이용해서 크롬 자동화 중간에 "다른이름으로 저장" dialog를 해보면 어쩌면 해결될지도 모르겠습니다
일단 쪼물락거려보고 성공하면 말씀드릴께요 기도 부탁드립니다 ^^ 즐거운 토요일 되세요
그런데 만들고 계신게 어떤건지는 제가 모르겠지만...
단순히 파일을 다운받아 저장하는거라면 웹페이지의 코드상에 다운로드 받을 파일의 url이 있는지 확인해보셨나요? 그렇다면 다른이름으로 저장 창 자체가 안뜨게 하고 다운받을수가 있을텐데요...
웬만하면 창이 안뜨고 해결하는게 좋습니다.
@@kimfl 정부24 사이트에서 서류열람을 자동화 시켰습니다. 전부도 아니고 꼴랑 하나 ㅎㅎ
그것도 자동화 과정에서 읍면동리 를 입력하면 전국에 있는 동명의 읍면동리가 나타나는 리스트 창이 하나 뜨고
원하는것을 클릭했을때...추측이지만 클릭할때 읍면동리의 코드가 히든으로 따라오는는거 같습니다
그냥 readonly 속성의 텍스트박스에 강제로 입력을 했더니 히든코드가 없어서 주소를 못찾는다는 에러가 발생하더라구요
그래서 리스트창의 소스를 다운받아서 텍스트 파일로 저장후 김플님에게 문자열 검색하는 방법을 여쭈었더니 코드를 주셔서 그걸로 검색해서 원하는 읍면동리의 명칭과 동일한걸 찾아서 인덱스 숫자만큼 pyautogui로 탭키 이동시켜서
허접하지만 히든코드를 가져오게 했습니다.
근데 time.sleep가 짧으면 진행과정에서 에러가 나고 길면 넘 오래걸리고...ㅎㅎㅎ
그래서 pywinauto로 해버리면 시간도 단축되기도 하고 에러도 없을거 같은 추측만으로
파이썬 지식없이 구글링과 유튜브만 보고 한달간 끙끙거리고 있습니다. ㅎㅎ
설명을 잘 못한거 같은데 이메일 주소 주시면 코드를 보내겠습니다
유치원생의 일기를 본다는 생각으로 봐주신다면 영광일거 같습니다 ㅎㅎㅎ
아니면 여기에 올릴까요? 엉망진창이라 솔직히 많이 부끄럽습니다.
나이 50 넘어서 머리도 안돌아가고 ㅎㅎㅎ
제 이메일은 abc1709711@gmail.com 입니다
바쁘실텐데 부담드리고 싶지 않습니다 진심입니다
좋은영상 감사합니다. 단순한 내용이지만 질문드립니다.
1. 구글 HTML내에 클래스명들이 매우복잡한데 이건 주기적으로 바뀌는걸까요?
한번 프로그램을 만들고 나중에 클래스명이 바껴서 안돌아가면 다시 클래스명을 수정해야하나요?
2. 웹페이지 로딩완료를 기다리기위해서 sleep 함수를 사용하고있는데..
sleep시간내에 완료못하는 경우도 있을거같습니다.
페이지로딩완료를 셀레늄에서 확인하고 진행하는 방법은 없나요?
->관련 영상이 있었네요. 감사합니다.
1. 제가 늘 구글 크롤링을 하는 게 아니라 자세히 살펴본 건 아니지만, (구글뿐만 아니라 다른 사이트라도)
주기적으로 클래스명이 바뀌는 사이트 크롤링 프로그램을 클래스를 이용해서 크롤링 하도록 만들었다면 당연히 수정해야겠죠. 사이트 내에서 안 바뀌는 부분을 찾아내서 그걸 이용해서 만들 수 있다면 좋을겁니다. 가령 예를 들자면 h1 태그를 사용하는 부분은 늘 h1 태그를 사용할 확률이 높으니 클래스 대신 태그명으로 찾아낸다거나 하는 거죠. 같은 사이트를 크롤링해도 만드는 사람마다 코드는 천차만별 다르게 만들 수 있습니다.
이 코드를 사용하면 새창을 띄워서 작업을 시작하는데 그냥 기존에 열려있는 창에다가 바로 작업 시키려면 어떻게 해야 할까요?
질문하나 드려도 될가 모르겠네요
제가 크롬 80.3 을 쓰는데 아이디 넣고 가면 비밀번호가 파이썬에서 여는 크롬브라우저에서는 나오질 않더라구요 구글에서 막은것 같은데 혹시 막힌것 풀으신것 있으신지요? 개념있게 질문을 하려고햇는데 .. 개념에 맞는지 모르겠네요 ..긁적 긁적
아참 윈도우환경입니다
고정댓글을 참고하시길 바랍니다.
안녕하세요~~동영상보고 따라하는 도중 pip로 셀레니움 다운받았는데 실행하려고 하면 command not found 라고 뜨는데 어떻게 해결 하나요??여기서 막혀버리니 진행이 안되네요 ㅠ
영상을 보다가 궁금증이 생겨서 여쭈어봅니다.
1.글이 아닌 이미지를 첨부할라면 어떤식으로 해야하나요?
영상과는 별개로
2. 이미지를 캡쳐한후 일정부분만 잘라내는 방법이 있나요?
3.잘려진 이미지에 써져있는 글을 인식하여 타이핑하는 방법이 있을까요?
1. send_keys로 텍스트가아닌 이미지 경로를 넣어주시면 됩니다.
2. 이미지처리는 pillow라는 모듈을 검색해보세요.
3. 이게 어렵습니다. 단순 글자냐 아니면 캡차이미지냐의 문제도 있는데요, 후자면 머신러닝을 공부하셔야될테고 단순히 글자가 들어있는 이미지라면 pytesseract를 검색해보세요. 캡차 처리는 알아야할게 많습니다.
@@kimfl 그럼 머신러닝을 공부해봐야겠메요 ㅠㅠ send_keys 에서 이미지경로를 대신 넣으라고 하셨는데 이미지명이 1.png면 그걸 집어넣어야하는건가요? send_keys는 그대로 쓰면되는건가요?
pc에 있는 이미지파일의 풀경로를 넣어주면 됩니다. send_keys('이미지경로')
셀레니움으로 모든 작업이 끝난 후에 크롬이 자동으로 닫혀버리는데 자동으로 크롬이 안꺼지게 하는 법은 어떻게 해야할까요?
수동으로 열어둔 창에(이미 로그인 완료된 브라우저) selenium 을 개입시키려면 어찌하는지 조언 부탁드립니다.....!
이 경우에 URL 을 그대로 넣어주면, 깨지더라구요 ㅠㅠ
질문있습니다. 위와 같은 방식으로 자동화 프로그램을 만들때 Webdriver를 이용해서 새 창을 열고 로그인을 하는데요. 새 창을 열지 않고 기존에 열어놓은, 로그인 해놓은 창을 활성화해서 파이썬으로 제어하는 방법은 어떻게 해야 할까요?
기존에 열어놓은 창을 제어할수는 없습니다.
셀레니움으로 로그인시 안전하지 않다고 뜨는 경우 : 구글에서는 보안을 위해 자동화된 로그인을 제한하고 있다고 합니다. 이 경우, "자동화"로 보일 수 있는 .send_keys 등 selenium의 method들이 인식되어 로그인을 제한하거나, 네이버의 경우 캡챠가 뜹니다. -> 이걸 방지하기 위해 키 입력을 pyperclip 모듈로 copy & paste하듯이 하여 send_keys를 쓰면 되는 것을 확인했습니다.
1. 셀레니움으로 로그인 시 안전하지 않다고 뜨는 경우
구글 로그인에 대해 이 부분은 여러 번 질문이 있었습니다. 그때마다 제가 말씀드리는 건 제가 안된 적이 없다 보니 해결책을 찾을 시도를 못하고 있다는 것입니다. 대형 사이트라면 대부분 자동 로그인을 막으려고 하는 경우가 많을 겁니다. 그런데 구글의 경우 모든 사람이 이 문제는 겪는 게 아니다 보니.. 저도 참 답답하네요.. 안돼야지 가능하도록 만들어볼 수가 있으니까요. 이 문제를 겪는 분들께 말씀드리는 건 구글 계정을 새로 만들어서 해보시고 만약 그 계정이 된다면 계정 설정 문제일 거라고 추측만을 말씀드리고 있습니다.
물론, 자동 로그인은 대부분의 사이트에서 하지 말라고 하는 만큼 계정 정지 등의 위험이 있습니다. 이 강의는 자동 로그인을 위한 강의가 아니라 그냥 셀레니움 사용법에 대한 실습일 뿐입니다. 로그인이 필요한 프로그램을 만든다면 api 등 다른 방법을 사용하는 게 좋겠죠. 물론, 이 강의 내용을 사용해도 문제가 안되는 사이트라면 이게 더 간단하긴 할 겁니다.
2. pyperclip을 사용한 네이버 로그인
이건 예전에는 네이버 로그인에 대해 질문하시는 분들에게 직접적으로 알려드리는 건 아니더라도 복사 붙여넣기라는 간단한 힌트를 드렸었습니다.
그런데 요즘은 그 힌트조차도 고민하고 있는데요, 그 이유는 네이버에서 자동 로그인을 하지 말라고 캡챠를 띄웠는데 그걸 해결하는 방법을 알려드려도 될지 모르겠습니다. 사용하는 사람이 단순이 공부 차원인지, 아니면 뭔가 안 좋은 프로그램을 만들고 있는지 제가 알 수가 없으니까요.
그래서 사실 pyperclip을 사용한 방법과 함께 좀 더 어렵지만 더 좋은 몇 가지 방법을 추가해서 네이버 캡챠를 해결하는 방법에 대한 강의를 만들려고 하다가 몇 달째 보류 중입니다.
점점 갈수록 강의를 만들 때 많은 고민을 하게 됩니다.
안녕하세요 제휴제안이나 개발문의 등의 연락은 어디로 드리면 될까요? 제안드리고 싶은 내용이 있는데 여기저기 뒤져봐도 이메일주소 하나 못 찾겠어서요 ...!
의뢰는 받지 않으시는것 같아요
댓글이 늦었습니다
강의 잘보고 있습니다
항상 감사합니다~^^
@@kimfl 제가 오히려 더 감사드려야죠 여긴 시골이라 파이썬 가르치는 학원도 하니없어요 ㅠ
그러니 제가 더 감사합니다
안녕하세요. 영샅초반에 크롬드라이버를 설치하는데요..이때문에 이런 브라우저 조작하는.프로그램은.. repl.it 나 주피터로도 만들수 없는건가요?
주피터 노트북으로는 원래 됩니다. 그리고 repl.it은 저도 생각은 해본 문제인데 실제 해본적은 없습니다만..안되지 않을까 생각합니다.
초반 영상부터 너무 잘보고 있습니다 :) 질문이 있습니다.
앞부분은 수동으로 하고 (크롬에서 로그인>인증>팝업제거>일정게시판이동 이후)
기존창에서 실행되어 있는 부분부터 매크로를 구현하고 싶은데, 혹시 방법이 없을까요..
제가 알기로 수동으로 시작하고 그다음에 셀레니움으로 조작하는 방법은 없습니다만... 정 필요하다면 드라이버를 열고나서 타임슬립으로 일정시간 멈춰놓은다음 멈춰놓은 시간안에 수동으로 조작하고 그다음부터 매크로로 조작되게 해야하지 않을까 합니다.
버튼을 하나 만들어서 그것을 클릭하면 그때부터 자동부분 추가하면 되시지 않을까요?
.click()는 어떻게 실행해야 하나요
단박에 구독
훌륭하네요. 좋은정보 감사합니다.
직장내 폐쇄망은 인터넷이 안되는 환경인데요 이런환경을 설치할수 있을까 싶네요. IDE나 파이썬은 다운받아서 하면 될듯한데 PIP install 명령으로 설치하는것들은 어떻게 하면 가능할지요?
pypi.org에서 원하는 패키지를 다운받아서 설치하면 됩니다.
실행까지 뺑뺑이(로딩시간)가 오래돌면 따로 코드설정이 추가로 필요한가용?
네! time.sleep(몇초) 이런식으로 줘서 그시간까지 프로그램을 기다리게 할 수 있습니당
안녕하세요! 너무 잘 보고 있습니다. 혹시 글을 쓸 때 '안녕하세요'를 지우고 다른 말을 쓰고 싶다면 어떤 기능을 사용하면 좋을까요? driver.clear(), driver.remove() 다 해봤는데 안되서 여쭤봅니다!
키를 입력할때 driver에 바로 send_keys하는게 아니고 키를 입력할 부분을 찾아서 하는것과 마찬가지로 글을 지울부분의 요소를 찾아서 clear()를 사용하면 됩니다.
안녕하세요 센드키 할 내용을 엑셀에 적어놓고 보내는 방법이 궁금합니다...! 여차하면 여러개 적어놓고 for 문을 쓴다거나..
openpyxl 등의 모듈을 사용하면 파이썬에서 엑셀을 읽어올수 있습니다.
선생님 팝업창에서도 find element기능을 사용 가능한가요?
팝업마다 사용방법은 다르겠지만 가능합니다.
이렇게 만든 매크로로 어플리케이션도 만들 수 있나요?
좋은 정보 감사드립니다.
여러 웹사이트에 시험중인데 로그인 할때 비밀번호가 코드에 적어논 string과 달리 엉뚱하게 입력되네요. 예) 코드상: action.send_keys('abcdef').perform() 웹상에 실제 적히는 비밀번호: find_element_by_id. 이런경우도 해당 웹사이트가 매크로로 자동로그인을 막아논 케이스일까요?
저는 개인적으로는 action을 사용하지 않습니당..
설명 해주신것 만으론 잘 모르겠는데 웹사이트를 알려주시면 테스트 해볼 수 있을 것 같아요
안녕하세요?
셀레니움을 통해 로그인 하려고 하는데, 구글 로그인 팝업창이 떠서 active.send_keys().perform() 이 작동하지 않는것 같습니다...
구글링 해보니, 팝업창에 focus? 가잡히지 않아서 그런다고
driver.switchTo().window("popup window");
driver.swithto().window 를 쓰라고 하는데, 안되네요.. 팝업창으로 이동하는 법이 있을까요?
팝업 종류에 따라서 좀 달라지지만...
일반 브라우저창과 똑같은 종류의 팝업이라면,
driver.switch_to_window(driver.window_handles[1])
@@kimfl 네 덕분에 해결 됐습니다! 감사합니다. ^^
티켓 취소표 이삭줍기 매크로 F5 연타(타임슬립 2초) 하라고 했더니 중간에 리캡챠 뜨는데 포기해야되나요? ㅠㅠ;
현재 구름IDE(클라우드 IDE)를 쓰는 중입니다. 강의대로 selenium을 import 하고 크롬드라이버를 설치후 클라우드 내의 디렉토리에
'chromedriver.exe' 파일을 넣었는데 실행을 시키면 이 파일의 path를 못찾는데 클라우드 내 디렉토리에서 path를 못찾으면 어떻게 하나요? 현재 드라이버가 들어있는 경로는 workspace/python/chromedriver.exe입니다. pc로 코딩을 할 환경이 안되서 항상 백업이 되는 클라우드 ide를 쓰는데 컴퓨터 내의 자체 디렉토리를 쓰지 못하다보니 문제해결이 어렵습니다. 알려주시면 정말 감사하겠네요!
제가 이 문제는 확실히 답변을 못드리겠는게... 크롬드라이버는 실행하면 pc에 깔려있는 크롬을 열어서 실행하게 됩니다. 제가 구름IDE를 사용하는게 아니다보니 클라우드상의 크롬드라이버가 pc에 있는 크롬을 실행시키는게 가능한지 모르겠네요.
영상 보면서 따라하다가 막히는 부분이 있어서 질문드립니다!
웹사이트 접속할때마다 공지사항 창이 뜨는데 그 창을 닫는 코드를 만들다 막혔습니다.
공지사항 닫기 코드는 id밖에 없어서 driver.find_element_by_id를 썼는데
문제는 공지사항이 바뀔때마다 id값도 바뀌어서 코드를 다시 만들어야합니다.
코드에서 숫자만 바뀌는데 혹시 코드값이 바뀌어도 창을 닫을 수 있는 방법이 있을까요?
예를 들면 driver.find_element_by_id('abc_360_def').click() 일때 360숫자만 바뀌고
저 숫자 외에 앞뒤 영어는 같을때 숫자가 바뀌어도 코드가 작동되는 방법 있을까요?
이런건 제가 알기로는 셀레니움만으로는 해결이 안되구요... 제생각에는 정규표현식을 배우신 다음에 항상 들어가는 문자열이 있는 태그를 beautifulsoup 라이브러리로 추출하여 클릭하는 방식으로 만드셔야 할 것 같습니다.
@@kimfl 감사합니다!
혹시 하나만 더 질문드려도 될까요?
하이퍼링크가 있는 엑셀 혹은 워드 파일을 파이썬으로 불러오면 하이퍼링크만 사라집니다
엑셀 혹은 워드에 있는 하이퍼링크를 유지시키면서 파이썬으로 불러올수있는 방법이 없을까요?
제가 질문을 정확하게 이해하지 못했는데.. 혹시 codeday.me/ko/qa/20190623/871057.html 이런거 말씀하시는건가요?
이런 웹페이지 자동화를 사용하는 이유가 뭔가요??
메일 보내는것 같은 경우에는 smtp를 통해서도 보낼수 있는걸로아는데...
이런 작업이 사용되는 분야가 어떤부분이 있을까요??
메일 보내는건 단순예제로 당연히 이런식으로 사용하는 사람은 없겠죠. 하지만 웹페이지를 자동으로 조작한다는건 자신이 뭘 하려는가에 따라서 무궁무진한 분야에 사용가능하겠죠? 자동뿐만 아니라 속도또한 사람과 비교안되게 빠르게 조작 할 수 있으니까요.
@@kimfl 아하 감사합니다!
정말정말 유용한 영상 감사합니다! 일상생활에서 간단하게 자동화 하고싶은 게 있었는데 어떻게 시작해야할지 감조차 잡히지 않아서 막막했었거든요ㅠㅠ
엣지 웹 드라이버는 아무리 찾아도 없어요 도와주세요
크룸브라우저는 다 버전이 안 맞아서입니다:)
안녕하세요 사용중인 크롬 버전이 73버전이라 같은 종류의 크롬드라이설치시 아래와 같은 도스 창에서 아래와 같이 출력이 되네요 번역기 돌려 보니 로컬 영역만 허용 된다고 하는데 무슨 말인지 잘 이해가 안되네요
조언 부탁 드립니다
Starting ChromeDriver 73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
일단 크롬과 크롬드라이버 모두 버전을 업그레이드 해보시고 그래도 안되면
stackoverflow.com/questions/55069656/please-protect-ports-used-by-chromedriver-and-related-test-frameworks-to-prevent
이걸 한번 확인해보세요. 이 문제에 대해서는 제가 정확하게 모르겠습니다.
0:45 셀레니움 설치 😉
pip install selenium 을 쳐도 설치가 되지않고 이름이나 경로가 정확한지 확인하라는데 어떻게 해야하나요?
webdriver를 실행 시키게 되면 ,
" localhost 연결시킬수 없습니다 " 라고 나오고 , 아무것도 반응하지 않습니다. 어떻게 해결 해야하는걸까요 ? 방화벽이나 , 다른 실행파일을 설치해야 하는걸까요 ?
특정 사이트만 이런가요 아니면 모든 사이트가 다 안되나요? 그리고 콘솔창에서 'localhost 연결시킬수 없습니다' 이렇게 한글로 뜨는건가요? 일단 크롬과 크롬드라이버 모두 최신버전으로 업데이트 해보세요.
send_keys를 사용해서 글자를 입력할 때 글자마다 딜레이를 주는 방법은 없을까요?
pyautogui는 interval을 사용해서 가능하던데 한글을 입력할 수 없어서 send_keys로 interval을 주는 명령이 가능한지 여쭤보고 싶습니다.
import pyautogui 한다음에
인터벌 기능을 셀레니움이랑 같이 사용하는 것도 가능합니다!
안녕하세요 김플님 항상 강의 잘보고있습니다^^ 다름이 아니라 아이디를 누르고 그다음 비밀번호창을 선택한뒤에 SEND_KEYS를 이용해 비밀번호를 칠때 아이디랑비밀번호가 동시에 같이쳐저서 로그인이 안됩니다..ㅠㅠ 혹시 이부분 질문이 가능할까해서 글남깁니다 항상 감사합니다!
동시에 쳐진다는게 비밀번호창에 아이디도 쳐진다는 건가요? 아니면 아이디를 치기도 전에 비밀번호가 쳐진다는 건가요? 코드도 좀 같이 올려주세요.
초반부터 현재까지 잘보고있습니다.셀레니움을 공부중에 궁금한게 있어서 여쭤봅니다. 아무리 검색해도 안나오더라구요 ㅠ
예를들면 홈페이지에 최신글 목록이 있습니다.
셀레니움으로 최신글의 목록 글 클릭까지 성공했는데요.궁금한건 최신글 목록에서 댓글이 작성된 최신글은 클릭을 안하고 댓글이 없는것만 클릭을 하려면 어떤식으로 해야하나요..?
이런건 셀레니움에 특별한 기능이 있는게 아니라 그냥 조건문을 이용해서 만드는겁니다. 그러니 검색해도 특별히 나오는게 없을겁니다.
@@kimfl 우선 빠른답변 감사드립니. 그러면 조건문에 대해 공부를 하면 될까요??
조건문, 반복문은 모든 프로그래밍에서 기본이자 필수입니다.
@@kimfl 네 감사합니다! 셀레니움으로 파이썬을 첫시작해서..김플님 덕분에 방향성을 찾았습니다. 다시 한번 감사드립니다.
아이디 비번 노출 위험은 어떻게 대비해야 하나요?
또 질문이 있는데요.. 여태 selenium을 활용해서 웹사이트 분석하고 find_elements_by.. 어쩌고 하면서 어렵게 프로그램을 짰는데요.
pyautogui를 해보니, 여태 왜 그런 고생을 했지? 거의 사람이 하는 프로세스를 그대로 가져와 프로그램화 할 수 있겠던데, 그동안 왜 웹사이트를 분석했지? 하는 생각이 드는거예요..
혹시 웹사이트를 분석해서 하는 방법과 pyautogui를 활용해서 자동화 하는 것에 큰 차이점이라도 있을지요? ^^
selenium과 pyautogui는 근본적으로 아~주 큰 차이가 있습니다. 엄청 많지만... 그냥 몇가지만 꼽자면, 셀레니움은 프로그램을 여러개 돌려도 컴퓨터 자원이 허락하는한 여러 사이트 자동화를 동시에 할 수 있습니다. 하지만 pyautogui는 실제 마우스, 키보드가 움직이는거니 동시작업이 안되죠. 심지어 작동할때 사람은 pc를 못씁니다. 하지만 셀레니움은 그냥 브라우저창 내려놓고 하던거 하면 되죠. 아니면 HeadLess모드를 사용하면 브라우저 자체가 아예 안열린 상태로 작업도 가능하니 그냥 비교가 안됩니다. pyautogui는 단순히 눈에 보이는걸 자동화 할뿐입니다. 많이 만들어보시면 느끼시겠지만.. 할 수 있는 한 selenium이 훨씬 좋습니다. 만들다보면 만드는게 더 어렵지도 않습니다. 오히려 pyautogui로 좌표잡고, 이미지 저장하고.. 그러는게 더 번거롭습니다. 그래서 저는 웹사이트 자동화에서는 셀레니움으로 도저히 할 수 없는것만 pyautogui를 사용합니다.
@@kimfl 그렇군요. 웹사이트 자동화는 셀리니움으로 도저히 할 수 없는 것만 pyautogui를 사용한다! 음.. 명심하겠습니다 ^^ 속시원한 답변 감사드립니다.
이런 문제가 있습니다. selenium으로 네이버에 접속하니까.. 소프트웨어 자동제어되고 있다는 메세지가 뜨면서, 로그인이 보안로그인으로 들어갑니다. 그러면, 캡챠(?) 문자를 보고 써줘야 해서 로그인을 할 수 없고..
이번에는 pyautogui로 로그인을 하려고 하니까, pyautogui와 selenium을 동시에 하나의 크롬창에서 쓸 수가 없네요. pyautogui로 크롬 아이콘을 눌러서 크롬을 실행시킬 수 있는데, 그다음에 selenium으로 webdriver.Chrome()을 하니까 다시 보안로그인창으로 들어가게 되네요..
pyautogui와 selenium을 동시에 하나의 chrome창에서 쓸 수없는거 같은데 어떻게 해결할 수 있을까요?
순서를 바꾸면 되죠.
selenium으로 웹브라우저를 띄우고,
거기에서 pyautogui로 로그인을 하고,
그 다음 작업부터 다시 selenium으로 하면 되죠.
@@kimfl ㅎㅎㅎㅎㅎ 대박 ㅋㅋㅋ 아 진짜~~ ^^ 감사합니다! 이것때문에 일주일 헤맸어요 ㅎㅎ 해보겠습니다. 이리 친절히 답변 주시는데 전 어떻게 보답하죠^^
질문 하나 드려도 되겠습니까?
자동화 하다보니 웹페이지에서 파일을 다운을 하게 되네요
이때 다른이름으로 저장 대화상자가
뜨는데 셀레니움으로 다루는 방법도 모르겠습니다
그래서 어설프게 pyautogui를 이용하는데
직접적으로 대화상자를 다루는 방법이 있을거 같은데 강의한번 해주시면 안될까요?
질문을 드린다는게 부탁을 하게 되네요
다른이름으로 저장, 파일 열기 이런걸 할때 뜨는 창은 시스템 자체의 창으로 셀레니움으로 다루는게 불가능합니다.ㅠㅠ 저도 예전에 한창 셀레니움 공부할때 열심히 찾아봤지만 방법이 없습니다. 그래서 저도 pyautogui를 사용합니다.
@@kimfl 답변 감시드립니다
즐건하루 되세요
안녕하세요
웹 자동화 프로그램 공부중인데요. 잘 보고 있습니다.
웹에서 클릭하면 새창이나, 팝업이 뜨는데요. 혹시 닫는 법좀 알려주실수 있을가요?
본페이지에서 선택> 새창열림 닫기
본페이지에서 선택> 팝업창열림 닫기
driver.close() 하니까 본창에 닫힘되더라구요
팝업 종류에 따라서 좀 달라지지만...
일반 브라우저창과 똑같은 종류의 팝업이라면,
driver.switch_to_window(driver.window_handles[1])
제 생각엔 사실 request post방식일거 같습니다.
포항시 남구 구룡포읍 석병리 라고 입력하면
구룡포읍 의 "리" 가 전부( 구룡포리,석병리,병포리...등등)이 팝업창에 뜨는데
아무리 뷰티풀솝으로 크롤링을 해도 주소를 검색하기전의 초기 소스코드만 보이더라구요
근데 마우스로 우클릭 소스보기를 하면 주소 검색후의 구룡포읍의 모든 리 단위가 보입니다
그래서 request post방식으로 크롤링하면 될거 같긴한데
지식이 없어서 1도 진전이 없습니다 ㅎㅎㅎ
그래서 pyautogui 를 이용하게 된거고... 하다보니 pywinauto로 가는게 좀 더 나을거 같아서
방법을 찾는중입니다.
하지만 가장 근본적인 방법은 request post방식인거 같은게
크롤링할 주소를 던질때 post 방식이면 "석병리" 질문에 대한 결과를 크롤링 하게 되는거 아닌가 합니다
개념 자체를 모르고 말씀드리는건지도 모르면서 막 말을 하네요 ㅎㅎ
설명을 못하니 이해도 안되시죠?
그래도 김플님 덕분에 문자열 찾는 코드 주셔서 편하게 업무를 보고 있습니다
생각해보니 다시한번 감사하네요
감사드립니다
일단, 크롤링 하고싶은 페이지의 url을 한번 보고싶습니다. 정부24를 들어가봐도 야홍님이 하시는게 어디에서 봐야하는지 모르겠네요;;
제가 야홍님의 소스코드를 직접 보기보다는 어떤식의 페이지를 어떻게 하려는건지 페이지를 직접보고나서 그다음에 어떤걸 적용해보세요 라고 힌트를 드리는게 좋지않을까 생각됩니다.
url이 아니라 정부24 사이트에서 어디로 들어가서 뭘 해보면 되는지 알려주셔도 됩니다.
@@kimfl 답변주셔서 감사합니다
우선 로그인후 토지대장으로 들어가면
발급과 열람으로 나누어지는데 전 열람으로 갑니다 그리고는 주소를 넣는 과정에서 팝업창이 뜹니다
이 팝업창을 request post방식으로 접근
해야 되는거 같긴한데 ㅎ
여튼 여기서 모르니 위에 적은대로
한거였어요
넘 귀찮게 해드린거 같아서 죄송합니다
편안한 밤 되세요
가을이 와서 넘 좋네요 ㅎ
저는 로그인하고 토지대장을 들어가면 발급과 열람이 아니고 신청하기가 나옵니다.
제가 정부24를 이용 할 일이 없다보니 야홍님이 원하는 페이지를 제가 보고있는건지 모르겠네요;
돌고 돌아 많은 동영상 섭렵후 오늘 처음 맥북에서 셀레니움 파이어폭스 구동까지 완료하고 자동화 해보려고 아이디 텝 하면서 actionchains하는데 텝이 사정없이 막눌려버리네요... 혹시나 keyup까지 다 해봤는데 소용이... 혹여나 비슷한 증상들 들어보신적 있나요?
북치고 장구치고 죄송합니다. 초보자라서... 해결을 했는데. 혹시 perform이.. 한번만들어가면 그 위에 있는 모든 행위들을 동시에 처리한다는뜻인가요...? 해당 def가 조금 중간에 섞였더니... 수도없는 탭눌림 현상이... ㅋㅋㅋㅋㅋ
안녕하세요 강의 영상을 잘보면서 잘 따라하고 있는데 한가지 문제점이 생겨서 여쭙겠습니다.
action.send_keys('sil2sdsds@naver.com').perform()
action.reset_actions()
키값을 보낸뒤 수행수 리셋을 했는데도
gamail을 보낼떄 action의 키값이 남았는지 메일보내는 란에 sil2sdsds@naver.com값이 두번이 써집니다.
리셋이 안된거 같은데 이문제를 어떻게 해결해야 할까요?
코드는 예제랑 똑같이 하셨나요? 아니라면 코드를 한번 올려주세요.
비밀번호 위치에 비번은 빼고 올려주세요.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
#웹드라이버를 이용해서 구글을 연다 액션이라는 변수에 드라이버로 번수 제어
driver = webdriver.Chrome()
url = 'google.com'
driver.get(url)
action = ActionChains(driver)
#로그인버튼을 찾는다
driver.find_element_by_css_selector('#gb_70').click()
#차기
action.send_keys('silent10z@naver.com').perform()
action.reset_actions()
driver.find_element_by_css_selector('.CwaK9').click()
time.sleep(2)
driver.find_element_by_css_selector('.whsOnd.zHQkBf').send_keys('비밀번호비움')
driver.find_element_by_css_selector('.CwaK9').click()
time.sleep(2)
driver.get('mail.google.com/mail/u/0/?ogbl#inbox')
driver.find_element_by_css_selector('.T-I.J-J5-Ji.T-I-KE.L3').click()
time.sleep(1)
send_button = driver.find_element_by_css_selector('.gU.Up')
#받는사람을 입력하기 #아무요소나 클릭가능
action.send_keys('silentgu28@gmail.com').key_down(Keys.TAB).pause(2).key_down(Keys.TAB)\
.send_keys('제목입니다').pause(2).key_down(Keys.TAB)\
.send_keys('abcd').pause(2).key_down(Keys.ENTER)\
.key_down(Keys.SHIFT).send_keys('abcde').key_down(Keys.SHIFT)\
.move_to_element(send_button).click()\
.perform()
Keys.TAB 부분도 바로 두번안되서 퍼즈걸어주고 실행했어요
저도 위에 로그인 메일 주소와 받는 메일 주소 두개가 연달아서 들어가네요.. 소스는 위와 똑같이 했구요..
reset_action()이 완벽하게 작동 안할경우 코드 중간에
action = ActionChains(driver)를 한번 더 넣어서 action을 완전히 새로 지정하면 됩니다.
셀레니움에서 특히 액션체인이 다루기 까다롭습니다. 셀레니움의 버전에 따라, 사용하는 웹드라이버 종류, 버전에 따라서 작동이 조금씩 다르게 되는경우가 많습니다.
그리고 키입력은 모두의 인터넷 속도나 컴퓨터 환경이 다르기때문에 어디에서는 쉬는시간없이 작동이 되어도 어디에서는 쉬는시간을 지정해줘야 하는 경우가 생깁니다. 키입력에 대한 부분은 각자 만들면서 자신의 환경에 맞게 넣어주시면 됩니다.
action.reset_actions()
action=ActionChains(driver)
전 이걸로 해결했어요 말씀해주신데로 받는메일 주소란에 쓰는 소스코드 전에요
질문이 있습니다~ 자동화 프로그램 만드는 중에 제 컴퓨터의 파일을 네이버 블로그에 자동으로 업로드 하게 하려고 하는데요, 블로그 글쓰기 창에서 사진 선택 버튼을 누르면 사진 선택 창이 뜨거든요. 그런데 send_key를 해도 파일명 쓰는 곳에 입력이 안되고 아무 반응도 없는데... 그 새로 뜬 사진 선택 창의 파일명 입력 칸에 값을 넣으려면 어떻게 해야 할까요??
파일선택창이 사이트에 속해있는게 아니라 윈도우의 파일선택창이 뜬다면 셀레니움으로 제어가 불가능합니다. 그럴때는 pyautogui같은 모듈을 추가로 사용하던가, 사진선택버튼이 input태그로 되어있으면 그냥 글 입력할때 사용하는 send_keys로 파일경로를 완벽하게 넣어주면 됩니다. input태그일 경우 두번째 방법을 추천합니다.
창 떴을때 sendkeys가 안먹으면 input 태그가 아니겠죠? ㅠㅠ
그게아니라 버튼이 input태그면 누르지말고 파일명을 전송하는겁니다. 그러면 파일은 업로드가 되지만 창 자체가 아예 안뜹니다.
@@kimfl 아... 답변 정말 감사드립니다 ㅠㅠ 죄송히지만 하나만 더 여쭤봐도 될까요... 파이썬에서 블로그에 본문을 턱스트로 send key 하다가 이미지 삽입하려는 때에 이미지넣는 버튼을 누르면 파일열기 창이 뜨면서 파일명 넣는 곳에 send key로는 글씨가 자동으로 안써지거든요. send key를 해서 글씨를 보내기 직전에 파일명 쓰는 곳을 클릭해서 활성화 해도 send key로 글씨가 안써지는데 pyautogui를 어떻게 쓰면 해결할수 있을까요?? 프로그래밍을 첨해보는데 어제 연차까지 쓰고 해보는데도 잘 안되네요 ㅠㅠ
블로그에 글쓰다가 이미지 버튼 누르면 나오는 창이 윈도우에서 사용하는 탐색기 창이랑 똑같이 생겼죠? 그러니까 먼저 답변드린데로 윈도우 파일선택창은 셀레니움으로 제어가 안됩니다.
그래서 버튼이 input태그일 경우 '버튼을 누르지 말고'
수고하십니다. 항상 좋은 영상으로 도움이 정말 많이 됩니다. 공부도 많이 되고 파이썬 설치도 못하다가 김플님 동영상보면서 따라하면서 여기까지 왔는데요..그 구글계정이 여러개 있어서 특정 구글계정으로 구글을 켜고 싶은데 방법이 있을까요? 크롬을 실행시켜서 점3개 옆에 개정을 클릭하면 다른 계정을 클릭할수 있는데 개발자로 봐보니까 주소창 옆에는 개발자로 안나오더라구요...방법이 있을까요?
원하는 계정으로 로그인을 하면 되지 않나요?
안녕하세요. 파린이입니다.
영상보면서 공부하다가 실제로 적용해보려고하는데,
밑에 코드에서 햇갈리는부분이 생겨서요...
(code)
수정
복사
4895667432
33003747489
위 코드에서 "row-index" 기준으로 목록들이 쭉 나열됩니다. 0,1,2,3,4,5,6,7,8,9.... for문을 구현할 수 있는 기준점이 될 수 있을것같아서
selenium 와 xpath를 통해 각각의 index에 속한 수정이라는 버튼을 클릭하려고하는데.. 좀처럼 쉽지않네요ㅠㅠ..
좋은방법없을까요?
여러군데 다 찾아도 없어서요ㅜ
위 내용만으로는 뭘 하시려는 건지 모르겠지만.. 꼭 xpath를 사용해야 하는 이유가 있나요? 쉽지 않다는게 xpath를 만드는것이라면 개발자도구에서 copy xpath로 쉽게 만들 수 있습니다.
@@kimfl 답변감사합니다! 재밌게 공부하고있어요
안녕하세요! 김플님^^ 어느순간부터 제 visual studio code가 안내를 하지 않습니다...
예를들어서 pyautogui.c 를 쓰면 c로 시작하는 사용할 수 있는 것을 안내해야 하는데 하지 않네요. 제가 뭔가 설정을 건드린 거 같은데 어떻게 해볼 수 있을지요? ^^
왼쪽 익스텐션 들어가셔서 파이썬이 사용안함으로 되어있나 확인 한번 해보세요.
@@kimfl 어제 아톰을 설치하면서 생긴 일시적인 현상이었나 봅니다 ^^ 잘 해결되었습니다. 익스텐션에 python 사용함으로 잘 되어 있습니다. 감사합니다.
위 전체기능을 주기적으로 재반복하려면 어떻게 하나요?
윈도우 작업스케줄러를 이용하면 주기적으로 재반복하게 만들 수 있습니다~!
네이버 로그인에 응용해봤는데 보안문자입력하라고 뜨네요 이건 네이버 자체적으로 보안상 막아놓은건가요??? 아님 설정 문제인가요
네이버에서 매크로라고 생각해서 보안문자입력이 나온겁니다.
@@kimfl 이런 경우에는 어떻게 하나요??? 불가능한가요??
상당히 유용한 영상 같아요!!혹시 서버의 변수값에의하여 클릭하는 값을 다르게 설정할수도있을까요? 어떤페이지의 이벤트가 있을때만 실행하게 한다던지..그런게 있었으면 유용하게 사용할수있을거같은데요..~!감사합니다.^^
영상 쉽고 좋아서 감사합니다.
time.sleep() 으로 강제로 설정하는 것보다
화면이 업데이트 완료된 것을 확인한 후에 다음 작업을 하는 방법은 없는지요?
ruclips.net/video/ItvnZHG_AJk/видео.html
이 영상을 보시면 됩니다.
@@kimfl 좋은 강좌 고맙습니다.
혹시 네이버 블로그는 이 방법으로 자동화가 안되나요? 블로그 메인화면만 들어가면 driver.find_element_by_css_selector 이게 안먹는거같아요...
제가 만들어본건 아니지만 당연히 될겁니다. 코드가 작동을 안한다면 뭔가 선택을 잘못한것일겁니다.
Unexpected token WEBDRIVER Python parser-16 이렇게 나오는건 webdriver api버젼 문제인지요?ㅠㅠ계속해도 안되네요. 구글크롬 버전확인해서 받으라고 해서 알아보니 80 이라해서 그거 똑같이 받았는데. 저희가 64비트 윈도우인데 파일은 32win이라고 써있더라고요 그건 상관없는지요?
크롬드라이버는 그냥 win32는 사용하시면 됩니다. 에러문제는 다른 정보없이 올려주신 에러만 보고 무슨 이유인지 제가 잘 모르겠습니다.
@@kimfl 넵 제가 유튜브상에 이미지를
띄울수없어서요;;
댓글 감사합니다
zsh: command not found: pip 라고 나오는데 어떻게 하나요?
질문이 있습니다.
동영상을 보고 응용해서 만들던 도중에 새 탭에서는 send_key가 작동하지 않습니다, 어떻게 해야하나요
driver.switch_to_window(driver.window_handles[0]) 첫번째 탭으로 전환
driver.switch_to_window(driver.window_handles[1]) 두번째 탭으로 전환
이런식으로 리스트 인덱스처럼 숫자를 넣어 탭 전환이 가능합니다. 사용할 탭으로 전환해서 작업을 이어가면 됩니다.
@@kimfl 정말 감사합니다 이제야 이해가 되네요 정말정말 감사합니다 이런 유투버를 지금 본게 후회될 정도네요 감사합니가
고객이 레슨을 수강한 날짜 데이터을 복사해서 가져오는걸 자동화 하려고합니다.
어떤 한 지점을 클릭해서 복사해서 가져오는 것도 자동화가 가능할까요?
데이터가 어떤식으로 되어있는지, 어떠한 지점이 무엇인지 다른 사람은 모르니 결국 자동화가 가능한지는 만드는 사람만이 판단 할 수 있겠죠? 가능하다고 하더라도 결국 만드는 사람이 만들 능력이 되는가에 달렸습니다. 내용을 모르지만 웹사이트에서 단순반복하는 거라면 어렵지 않을거라고 생각합니다.