오토핫키 커뮤니티

질문
2018.10.01 10:36

함수 사용 질문

조회 수 473 추천 0 댓글 6

안녕하세요 개발자 여러분


스크립트 작성중 잘 안되고 이해가 잘 안되는 부분이 잇어 질문드릴까합니다...


바로 본론으로 들어가겠습니다. 아래 코드 확인 부탁해요


스크립트 내부에 사내 문건이 들어있어서 전부다 올리진 못하네여 ㅠ


아래와 같이 스크립트를 짰는데 함수 호출에서 항상 멍때립니다...


제가 어느 부분을 실수 하고 있는건지 모르겠습니다 ㅠㅠ


도운 부탁드립니다 개발자 여러분.



F5::

테스트:

{


외대()


Sleep 2000


외중()


}



;;; ↓ 수리내용등록

외대()

{

driver.findelementbyname("app_status1").click() ;외관상태[대] 선택

Sleep 3000

;driver.SwitchToWindowBytitle("▒ERP고객조회▒") ;팝업창으로 전환

driver.SwitchToNextWindow()

driver.findelementbyxpath("//*[@id=""tablesorter-demo""]/tbody/tr[2]/td[4]/input").click() ; 코드 01 선택

}

return


외중()

{

driver.SwitchToWindowBytitle("AS현황등록")

driver.switchtoframe("iframe")[2] ;3번째 프레임 전환

driver.findelementbyname("app_status2").click() ;외관상태[중] 선택

;driver.SwitchToWindowBytitle("▒ERP고객조회▒")

driver.SwitchToNextWindow()

driver.findelementbyxpath("//*[@id=""tablesorter-demo""]/tbody/tr[2]/td[4]/input").click() ; 코드 01 선택

}

return


  • 빵글빵글 2018.10.01 10:37

    함수 내부 스크립트는 정상 작동하는거 확인하였습니다.

    함수로 구성하여 호출만 하면 무반응입니다~

  • 빵글빵글 2018.10.01 11:05
    MsgBox 는 잘 불러오네요..-_-;
    selenium이 동작 안하는가봐여.....아휴
  • Hangoon 2018.10.02 11:22

    함수 외부에서 선언한 객체나 변수를 함수내에서는 사용할 수 없습니다

    객체를 global 선언하시던지 함수의 입력 파라메터로 전달해주시던지 해야합니다


    위 작성하신 함수안에는 driver라는 객체의 멤버함수를 사용하고 있는데 

    굳이 라벨을 이용한 서브루틴이 아닌 함수로 짜신 이유가 있다면 함수의 인자로 해당 객체를 함수 안에 전달 하시는게 좋을것이고

    아니라면 driver라는 객체 변수를 global선언하시면 될 것으로 보입니다


    global선언할때는 함수 안에서 하면 함수 안에서만 전역화되어 실질적인 전역화는 되지 않고요

    함수 밖에서 global선언을 하면 그 변수는 함수나 클래스에 관계없이 어디서나 참조하고 값을 수정할 수 있는 전역변수가 됩니다.

  • 빵글빵글 2018.10.03 03:23
    말씀하시는 서브루틴이 바로가기: 이런식으로 구성한걸 서브루틴이라고 하는건가여?
    서브루틴으로 했을땐 동작 하는뎅...
    굳이 함수로 짤 필요는 없습니다.
    서브루틴으로 잘 되기때문에 사용해도 지장은 없는데

    어느 가이드 글에서 gosub 와 goto 를 자주 사용하면 안좋다는 글을 본거 같아서
    함수를 이용해볼까 하고 도전 해보았네여~

    global 선언을 해주고 싶은데 방법이 머가 잇을까여 ?

    global driver. ~ ~~ 이런식으로 하면 오류 나더라구여...ㅎㅎㅎ
  • Hangoon 2018.10.03 09:41

    gosub이 안좋은것은 없습니다.
    다만 gosub과 goto를 명확하게 구분해서 사용하지 않는다면 스크립트 진행이 뭉친실타레처럼 꼬여버려서 예상하지 못하는 결과를 내었을때 디버깅 하기 어렵다거나 할 수 있지요

    gosub을 사용할때 주의점은 이동한 서브루틴에서 반드시 return을 만나게 해줘야 한다는겁니다.
    goto와 gosub 모두 해당 라벨로 이동하는건 맞지만 gosub은 서브루틴을 수행하고 return을 만나 원래 루틴으로 복귀하는 반면 goto는 그냥 그 라벨로 이동하는거니까요.
    만약 goto를 사용해야하는 자리에 gosub을 사용하면 처음에는 정상작동하는 것처럼 보일지 몰라도 뒤에 가면 예상못했던 문제를 보여주겠지요.
    gosub을 쓸때 주의하라는 것은 이런것을 이야기하는 것이고요.
    제 생각에도 웬만하면 함수로, 더 나아가서는 클래스 기반으로 짜는게 좀 더 복잡한 프로그램을 짤때는 맞긴 합니다만.. 반면에 닭잡는데 소잡는칼 쓸필요 없다는 생각도 있습니다 ㅎㅎ 오토핫키란게 편하자고 하는건데 코딩도 편하게 해야지요 ㅎㅎ

    잡설이 길었는데 하여튼 global선언은 그냥 global 변수명 해주시면 됩니다.
    변수 선언 전이든 후든 관계없이 아무데서나 한번 선언만 해주면 전역으로 적용됩니다
    함수 안에서 선언하면 상술했듯 해당 함수 안에서만 적용되구요

  • 빵글빵글 2018.10.03 12:06
    그럼 전 서브루틴은 잘 사용해왔던거네요 ㅎㅎ

    말씀하신 클래스 기반으로 짠다는건
    좀 더 배우고나서 해봐야겠네여

    답변 감사합니다 한군님!

List of Articles
분류 제목 글쓴이 최근변경 추천
질문 HTML <TD> 텍스트를 마우스 클릭 가능한가요 ? 4 빵글빵글 2018.10.04 0/0
질문 인증보안관련 질문입니다~ 4 시간에기대어 2018.10.08 0/0
질문 안녕하세요 포스트메세지관련 질문있어서 글써봅니다!! lym13 2018.10.01 0/0
질문 함수 사용 질문 6 빵글빵글 2018.10.03 0/0
자유 오토핫키에는 랜덤값 넣을수 있는것 있나요?? 1 데프픗 2018.10.01 0/0
자유 목표했던 매크로 하나 만들었네요. 6 무거움 2019.03.20 0/0
정보 오토핫키 if 기본부분인데 이해가 안돼서 도와주세요! 4 slka 2018.10.16 0/0
질문 파이썬에서 오토핫키로 변경 질문! 4 빵글빵글 2018.09.29 0/0
질문 이미지 서치도 게임사에서 대응을 하나요? 무거움 2018.09.26 0/0
질문 배우기 쉬운 매크로는 어느걸까요?? 7 모기야모기야 2019.04.18 0/0
질문 키보드 값을 알고 싶어요 2 웅ol 2019.03.20 0/0
질문 비활성 이미지서치 범위검색 문제 3 짜근햄 2018.09.29 0/0
질문 픽셀서치 다중으로 인식하게 하려면 어떻게 해야하죠? 1 제이프로 2018.10.01 0/0
자유 벽람항로 매크로도 오토핫키로 만들 수 있을까요? NEKO 2018.09.19 0/0
질문 postmassage랑 controlclick 둘다 안먹는경우는 어떻게... HyunsD 2018.09.19 0/0
질문 gdip 비활성 이미지 서치시 깜빡거림 1 러츄아애러 2018.09.17 0/0
질문 pc메이플 사냥 dleogns 2018.09.17 0/0
자유 메이플메크로 구매 dleogns 2018.09.17 0/0
자유 메이플pc버젼 매크로 가능 하신분 연락주세요 두치2 2018.09.17 0/0
자유 pc메이플 만드시는분 혹시계신가요? 르에 2018.09.17 0/0
Board Pagination Prev 1 ... 495051525354555657 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글