도와주세요

개발자도구의 콘솔창에서 iframe 내의 소스를 가져오는 방법에 대해 질문 드립니다

이니스프리2018.10.14 09:21조회 수 93댓글 11

    • 글자 크기

안녕하세요?


제가 카카오TV의 한 영상을 무한루프로 반복해서 볼 수 있는 javascript/jQuery 스크립트를 만들어보려고 하는데요.


이를 위해서는 다시보기 버튼을 CSS 셀렉터로 선택하는 과정이 필요할 것 같은데요.


브라우저 개발자도구의 콘솔창에서 iframe 내의 소스를 가져오는 방법에 대해 질문 드립니다.


파이썬 셀레니움에서는 다음의 방법으로 iframe 내의 html 코드를 가져와서 버튼을 클릭할 수 있었습니다.


driver.switch_to_frame(driver.find_element_by_tag_name("iframe"))


그런데 자바스크립트에서는 iframe 내의 소스를 가져오기 위한 방법에 대해 구글링을 해보면서 이것저것 시도해봐도 안 되더군요 ㅠㅠ



네이버TV의 경우에는 동영상이 iframe 내에 들어있지 않지만


카카오TV의 경우에는 iframe 내에 들어있더군요.


https://tv.kakao.com/channel/2865652/cliplink/391529197


위 강아지 동영상을 예로 들어 질문을 드리겠습니다 ^^



카카오TV의 다시보기 버튼의 소스는 다음과 같습니다.


<button type="button" class="img_player btn_replay player_replay hidden">다시 보기</button>


브라우저에서 카카오TV를 띄워놓고 동영상을 끝까지 본 다음에


크롬 개발자도구 콘솔창에서 $('img_player.btn_replay.player_replay.hidden');을 하면 다음과 같이 나옵니다 ㅠㅠ


ie.fn.init [prevObject: ie.fn.init(1), context: document, selector: "img_player.btn_replay.player_replay.hidden"


그런데 마우스우클릭으로 다시 보기 버튼을 클릭하여 개발자도구를 열고 

(제가 현재 우클릭 해제 익스텐션을 사용 중입니다 ^^)


XPath를 따온 후에 콘솔창에서 $x('//*[@id="controller"]/div[3]/div[1]/div[1]/button[1]')를 한 다음에


다시 $('img_player.btn_replay.player_replay.hidden').click();을 하면 제대로 클릭이 되더군요.


왜 이렇게 하면 가능한지 솔직히 잘 모르겠네요 ㅠㅠ



질문이 장황했는데 이처럼 iframe 내의 버튼을 개발자도구 콘솔창에서 jQuery로 클릭하려면 


어떠한 방법으로 할 수 있는지 여쭤봅니다 ^^


그럼 스포어 회원님들께서도 감기 조심하시고 즐겁고 뜻깊은 일요일 되세요~


답변 달아주실 분께 미리 감사드립니다!


I've got a good feeling about this, and that's all I'm going to tell you.

    • 글자 크기
  • 2018.10.14 10:01

    1.

    리플레이 selector 가 잘못 지정되어 있습니다. 2번째 방법에서는 왜 작동되었지 의문이네요.

    button.link_replay 로만 쓰시면 됩니다. $('button.link_replay').click() 으로요.

     

     

    2.

    콘솔에서 스크립트로 iframe 내부의 요소에 접근이 가능한가요?

    context 선택하는 방식으로는 작동이 가능해 보이지만, iframeElem.contentWindow 의 방식으로는 불가능 합니다.

    이거 어떤 방식으로 구현하실지 궁금하네요!

  • @네모
    2018.10.14 11:05

    1.

    리플레이 selector가 2개가 있습니다 :)

    네모님께서 말씀하신 selector의 경우에는 영상 가운데에 나오는 리플레이 버튼이고, 이니스프리님이 말씀하신 selector는 하단 부분에 생기는 리플레이 버튼입니다.

     

  • @humit
    2018.10.14 11:11

    하단 셀렉터도 오류가 나 있어요.
    img_player.btn_replay.player_replay.hidden 가 아니라
    .img_player.btn_replay.player_replay.hidden 가 되어야 합니당 img_player 를 클래스 취급하지 않고 있어요.

  • @네모
    2018.10.14 11:19

    아 앞쪽에 .이 있는줄 알았네요 ㅋㅋㅋㅋㅋ

  • @네모
    이니스프리글쓴이
    2018.10.14 16:36

    네모 님 답변 달아주셔서 감사합니다. :)

     

    1.

    이 부분은 제가 이것저것 시도하면서 그 과정을 에버노트에 붙여넣기 하다가 깜빡 잘못 말씀드렸네요 ㅠㅠ

     

    var jq = document.createElement('script');

    jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";

    document.getElementsByTagName('head')[0].appendChild(jq);

    $('button.img_player.btn_replay.player_replay').trigger('click');

     

    콘솔창에서 이런 방식으로 했었습니다 ㅠㅠ

    네이버에서는 비슷한 방식으로 잘 되더군요.

    humit 님 말씀대로 플레이 끝난 후에 플레이어 좌측 하단에 생기는 리플레이 버튼을 클릭하려고 했어요 ^^

    콘솔창에서 이걸 강제 클릭하면 곡이 진행되는 도중에도 다시 처음으로 돌릴 수 있더군요.

     

    2.

    그렇다면 콘솔창에서의 조작만으로는 불가능한 것이군요 ㅜㅜㅜㅜㅜ

    네이버나TV와 티비플의 경우 영상 1개의 반복을 업체측에서 지원하던데요.

    유독 카카오TV에서는 이 버튼이 없더군요 ㅠㅠ

    그래서 만들어보려고 한 것이었요.

     

    그럼 네모 님께서도 좋은 주말 오후 되세요 :)

    시간 내서 봐주셔서 다시 한 번 감사드립니다!

  • 2018.10.14 11:22

    1.
    일단 보안 문제로 인해서 도메인의 주소가 다른 경우에는 iframe의 조작이 불가합니다. (Same-origin-policy 정책)
    꼼수로 크롬을 실행할 때 아래와 같은 방식을 이용하시면 Same-origin-policy를 끌 수 있습니다.
    실행(시작+R)을 하시고 아래 내용을 입력하시면 됩니다.
    chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
    jQuery('#player_iframe iframe').contents().find('.player_replay').click()

    2.
    "XPath를 따온 후에 콘솔창에서 $x('//*[@id="controller"]/div[3]/div[1]/div[1]/button[1]')를 한 다음에
    다시 $('img_player.btn_replay.player_replay.hidden').click();을 하면 제대로 클릭이 되더군요" 에 대한 내용입니다.


    XPath를 따기 전의 모습입니다.




    XPath를 따고 난 다음의 모습입니다.



    보시게 되면 위쪽에는 top으로 되어 있던 것이 XPath를 따고 나면 391529194로 바뀌게 됩니다.



    즉 XPath를 따고 나면 콘솔창이 top으로 인식하는 것이 아니라 iframe 내부에서로 인식을 해서 클릭이 되게 됩니다.

  • @humit
    2018.10.14 11:41

    아하! XPath 따면 context가 이동되는군요.

  • @네모
    2018.10.14 11:52

    정확히 말하면 XPath를 따는게 아니라 Elements 탭에서 iframe 내부를 클릭할 때 context가 이동합니다.

  • @humit
    이니스프리글쓴이
    2018.10.14 16:44

    humit 님 주말 잘 보내고 계시는가요?

    복무 중이라 주말에도 바쁘실텐데 답변 달아주셔서 감사합니다 :)

     

    1.

    크롬 자체의 Same-origin-policy를 끄지 않고서는 불가능한 것이었군요 ㅠㅠ

    보안에 관련된 부분을 건드리면서까지 반복 재생하고 싶지는 않으니

    카카오TV를 정말 반복 재생해서 듣고 싶으면 차라리 selenium으로 듣는 편이 낫겠네요 :)

     

    2.

    저는 브라우저에 뭔가 버그가 있나 혼자서 고민을 했는데요 ㅠㅠ

    XPath를 따는 과정에서 자연스럽게 iframe 내부를 인식하게 되는 것이었군요 ㄷㄷ

     

    humit 님 덕분에 제가 궁금했던 부분이 모두 해결되었습니다! 감사합니다 :)

    그럼 humit 님께서도 남은 주말 즐겁게 보내시고

    저도 감기 때문에 고생하고 있는데 감기 조심하세요 ^-^

    humit 님께 항상 감사드립니다!

  • @이니스프리
    2018.10.14 18:45

    네네 열심히 코딩하세요 :)

  • 이니스프리글쓴이
    2018.10.14 17:52

    조금 우회적이기는 하지만

    https://play-tv.kakao.com/embed/player/cliplink/391561784?service=kakao_tv

    이렇게 창을 띄우면 iframe을 사용하지 않아서 자바스크립트로 다시보기 버튼 클릭이 잘 되네요 ^^

    이 창에서 반복재생해서 보겠습니다!

    제가 원래 음악을 반복재생해서 듣는 것을 좋아해서요 :)

    네모 님과 humit 님 두 분 다시 한 번 모두 감사드립니다~!

    저녁시갓 맛있게 드세요 ^-^

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 앞으로 ssh 사용시 한글 사용이 가능합니다.7 마스터 2018.10.12 12898
공지 접속 불가 사태 수습은 진행중입니다.35 마스터 2018.10.05 13543
공지 회원 전용 페이지가 생겼습니다.10 마스터 2018.03.20 14175
공지 [필독] 질문하는 방법5 마스터 2018.02.23 552
428 미디어위키 잘 아시는 분 계신가요15 마카롱 2017.10.12 206
427 킁.. 여전히 혼자 사망한 사이트..15 모니터 2018.10.06 163
426 VPS와 홈 서버에서 동시접속자 수에 대한 막연한 질문 드려요 ㅠㅠ14 이니스프리 2017.11.13 438
425 키감 가벼운 워드용 키보드 추천 부탁드립니다14 이니스프리 2018.10.12 140
424 질문2 - 제가 개발용 노트북을 사려고하는데 도움을 요청드립니다.14 JAVA 2017.11.11 522
423 호스팅 신청하려는데 포인트가 부족하네요. 구매할수 없나요?14 c4k 2017.06.23 381
422 ssh 로 접속했는데, 왜 아무 명령어가 되지 않을까요?14 워시퍼 2017.12.23 176
421 리눅스를 씁니다. 그런데말입니다.. 문제가..14 title: 황금 서버 (30일)하루살이 2016.09.30 220
420 클론질라 dhcp서버 질문입니다 ㅠㅠ14 크로스하트 2018.02.05 371
419 [완료] 사이트에 웹폰트를 추가하고 싶습니다.14 제르 2018.01.31 244
418 보안 오류13 Hanam09 2018.02.03 207
417 웹사이트 제작13 Wisdomhands 2016.10.10 260
416 삼성 덱스에 대해 궁금한게 있어요!13 joyful 2018.10.04 114
415 만약 광고를..13 Hanam09 2017.12.30 194
414 도매인 기관이전이 안됩니다.13 Kongjak 2018.02.10 228
413 크롬이 좀 이상한데...12 허니버터뚠뚜니라이츄 2017.07.22 230
412 XPEnology VMDK 파일 용량 오버 문제12 xnview 2018.07.06 125
411 지금 우분투 서버를 설치하려던 PC에서 DHCP 로드가 안됩니다.12 Soto 2017.11.05 205
410 Mac OS 80포트 여는방법12 루콤스튜디오(lucomstudio) 2018.06.03 173
409 스마트업로더 이미지 업로드 엑박12 연우빠 2017.10.01 267
이전 1 2 3 4 5 6 7 8 9 10... 23다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...