매크로

질문
2018.10.01 10:36

함수 사용 질문

조회 수 449 추천 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
분류 제목 글쓴이 최근변경 추천
자유 블루스택과 녹스에서 히트 돌릴때 색상차이 8 와이로 2017.11.09 4/0
정보 간단한 방법으로 길오아 오토핫키를 만들어보세요^^ 21 럭셔리형아 2018.02.07 4/0
정보 MS오피스 스타일 GUI 프로토타입 6 예지력1 2016.04.16 4/0
질문 오토핫키 에디터 제작. 9 프리헌터스 2015.09.11 4/0
정보 테일스타 내 포인트 조회기 16 와이로 2017.07.04 4/0
정보 팝업 알림, CleanNotify 3 예지력1 2015.11.11 4/0
정보 브레이브 헌터 ... 매크로.. 1 제발등업좀2 2015.07.10 4/0
자유 비활성이미지서치 중간정리(disp,adb) 11 우후훅 2017.04.03 4/0
정보 블루스택 해상도 변경하기... 10 로뎀나무 2015.04.15 4/0
자유 [AutoPM Ver 1.58] 포켓메이플스토리 매크로 8 은다 2015.04.25 4/0
정보 초보가 초보에게;; 핫키 사용법 8 악동주성 2016.09.03 4/0
질문 매크로좀 오랜만에 다시보고자 접속을... 7 joeypre 2021.09.27 3/0
자유 오랜만에 글남깁니다 ㅋ. 매우많이.. 늦었지만 복들 ... 3 제발등업좀2 2016.01.10 3/0
정보 앱아이콘 터치없이 adb로 앱 실행 시키는 방법 18 와이로 2021.01.23 3/0
정보 오토핫키를 간단히 쓰고싶지만 너무 어렵다고 느낄때 9 HyunsD 2018.02.07 3/0
정보 제가 쓰는 픽셀피커입니다(스크립트) 6 와이로 2017.02.11 3/0
정보 지니모션 디바이스(타이틀) 검색 ddl 소스 9 핸콕 2015.10.11 3/0
질문 텍스트를 가져오고 싶습니다. 6 _Crash 2022.12.14 3/0
정보 INI 를 쉽게 사용해봅시다. 11 모바게 2017.11.01 3/0
정보 DynaScript - Child 프로세스로 코드 실행 13 예지력1 2019.07.16 3/0
Board Pagination Prev 1 2345678910 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글