• 목록
  • 아래로
  • 위로

안녕하세요? 좋은 아침입니다!


요새 네이버를 비롯하여 다수의 사이트의 로그인 창에서 Selenium의 send_keys를 막아놓은 경우가 있더군요.


저도 아직 확실한 해결책을 찾지 못했지만 요새 삽질해서 얻은 교훈을 적어봅니다.



1. 자바스크립트를 이용하기


대략 아래와 같은 방법을 생각해볼 수 있습니다.



driver.execute_script("document.getElementsByName(패스워드 입력칸의 Name)[0].value=\'" + '패스워드' + "\'")



Stackoverflow에서는 해당 element의 속성을 최대한 removeattribute 하라는 조언도 있더군요.

(특정 속성을 추가하라는 내용도 봤는데 이 방법도 잘 안 되었습니다)


다만 제가 테스트한 사이트에서는 이 방법이 잘 먹히지 않았습니다 ㅠㅠ 

(Stackoverflow에 달린 리플을 봐도 이 방법까지 막아놓은 경우가 많은 것 같더군요)



2. PyAutoGUI를 이용한 Copy & Paste


제가 테스트한 사이트들도 그렇고, 다른 분들의 블로그를 봐도 그렇고


다행히 Pyperclip 등 클립보드 라이브러리를 이용하여 비밀번호를 Copy & Paste 하는 방법은 막아놓지 않았더군요.


아마도 이걸 막아놓으면 일반적인 유저들도 불편하기 때문일 것 같네요 ㄷㄷ



pyautogui.hotkey("ctrl", "v")



간단히 위와 같은 방법으로 할 수도 있고, 


PyAutoGUI를 이용하여 마우스 우클릭 후 방향키와 엔터를 누르는 방법으로 Copy & Paste를 할 수 있습니다.


다만 이 방법은 백그라운드에서는 사용할 수 없습니다.


현재 활성화된 창에서 Copy & Paste가 되기 때문입니다 ㅠㅠ


제가 테스트해보지는 않았지만 headless 모드에서는 Selenium 창이 비활성화되어 있기 때문에 아마도 안 될 것 같네요.



3. Selenium만을 이용한 Copy & Paste


Selenium만으로 Copy & Paste가 가능한지 저도 궁금해서 저도 여러 방법을 시도했는 다음과 같은 방법으로 성공했습니다.



from selenium.webdriver.common.keys import Keys

element.send_keys(Keys.CONTROL, 'v')



Stackoverflow에 os.system("echo %s| clip" % text.strip())을 삽입해야 한다는 답변도 있었는데요.


일단 제가 테스트한 환경에서는 이 부분을 제외하고도 Copy & Paste가 되는 것을 확인하였습니다.


참고로 아래와 같은 방법은 잘 되지 않았습니다 ㅠㅠ

 actions = ActionChains(driver)
 actions.key_down(Keys.CONTROL)
 actions.send_keys("c")
 actions.key_up(Keys.CONTROL)



Stackoverflow나 여러 블로그의 글을 보더라도 현재로서는 확실한 해결책이 없는 것 같더군요.


제가 나중에라도 더 확실한 방법을 알게 되면 댓글을 남기도록 하겠습니다 ^^


그럼 오늘도 좋은 하루 되세요!


작성자
이니스프리 119 Lv. (0%) 1876250/115200000EXP

당분간 일신상의 사정으로 쪽지나 댓글로 답변을 드리기 어렵습니다. 죄송합니다.

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
29 [Python] 그누보드 자동 글 작성 + 멀티 파일 업로드 스크립트 1 image 이니스프리 이니스프리 21.05.16.09:32 23690
28 [Python] GIF 파일에 프로그레스바 삽입하기! (Adding progress bar into GIF) image 이니스프리 이니스프리 22.05.14.13:14 12583
27 [BeautifulSoup] 자식태그를 제거하기 - .decompose() & .extract() 10 image 이니스프리 이니스프리 20.01.16.00:07 9250
26 [Pillow] 파이썬 Pillow 라이브러리를 이용하여 이미지의 배경을 transparent하게 만들기 11 image 이니스프리 이니스프리 19.08.04.13:40 7801
25 [Requests] Selenium을 이용한 Cloudflare의 우회 8 image 이니스프리 이니스프리 20.01.08.19:51 6247
24 [번외편] 네이버 동영상에서 자막을 파일로 추출하는 방법 2 image 이니스프리 이니스프리 19.12.25.22:34 5599
23 22. [OpenPyXL] 엑셀 문서 저장하기 / 시트 추가하기 / 셀에 입력하기 14 image 이니스프리 이니스프리 20.02.02.00:46 5578
22 [Selenium] Requests의 session을 Selenium으로 보내기 image 이니스프리 이니스프리 19.12.07.14:17 4666
[Selenium] Selenium에서 send_keys를 막아놓은 경우 해결책 이니스프리 이니스프리 19.07.04.05:52 4344
20 [번외편 - 구글뉴스] 리뉴얼된 구글뉴스에서 RSS 피드를 생성하는 방법 6 image 이니스프리 이니스프리 18.10.07.17:58 3532
19 [번외편 - 유튜브] Youtube API를 이용하거나 또는 이용하지 않고 채널ID를 추출하는 방법 2 image 이니스프리 이니스프리 19.07.16.17:55 2745
18 [번외편 - 아미나] 그누보드/아미나에서 게시글의 날짜를 최종수정일로 변경하고, 목록스킨 및 위젯을 최종수정일 순으로 정렬하기 2 image 이니스프리 이니스프리 18.11.11.22:36 2572
17 1. 반복문 (1) - while 문 7 image 이니스프리 이니스프리 19.12.06.20:50 2502
16 [디지털포렌식전문가] 제21회 필기시험 합격 후기 9 image 이니스프리 이니스프리 23.10.29.16:11 2477
15 6. 리스트와 관련된 기본함수 및 메서드 7 image 이니스프리 이니스프리 19.12.10.21:16 2090
14 [python-telegram-bot] 4096자 글자수 제한을 우회하는 방법 image 이니스프리 이니스프리 20.01.12.11:25 2050
13 [Selenium] proxy를 사용하지 않고 개발자도구에서 Network 탭의 로그를 얻기 image 이니스프리 이니스프리 21.03.06.23:35 1555
12 [Requests-HTML] Requests와 비교할 때의 장점! (네이버 뉴스 등 크롤링) 7 image 이니스프리 이니스프리 20.05.14.19:08 1422
11 [번외편 - 법률] 현행 저작권법 제30조(사적이용을 위한 복제)에 대하여 - 음원 다운로더의 처벌과 관련하여 6 이니스프리 이니스프리 18.12.07.14:16 1313
10 21. [OpenPyXL] 엑셀 문서를 열고 시트에서 셀의 값을 얻기 3 image 이니스프리 이니스프리 20.02.01.23:46 1269