매크로

질문
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
분류 제목 글쓴이 최근변경 추천
정보 Autohotkey에서 함수와 ByRef 사용에 대해... 12 류Macro 2015.07.12 1/0
자유 ahk 환경의 중요성.. 3 znel 2014.11.19 0/0
정보 이미지 서치 비활성 클릭 4 프린치크 2014.11.20 0/0
정보 비활성 클릭과 클릭 좌표의 오차에 대해서 3 lidmt 2016.04.07 2/0
질문 비활성 클릭관련하여 질문이 있습니다. 5 묵치기 2014.11.22 0/0
자유 (세븐나이츠)쌩초보가 만든 매크로 공유합니다.(이미지... 12 swksd 2015.04.24 2/0
정보 폴더내 이미지 찾는 Loop 5 묵치기 2014.12.01 0/0
질문 투명 배경으로 이미지 서치가 가능한가요? 9 묵치기 2014.11.23 0/0
질문 좌표 설정 질문드립니다 2 초이 2014.11.21 0/0
자유 (세븐나이츠) 뿌듯부듯.. 11 swksd 2015.11.14 1/0
자유 마우스 클릭 좌표 질문입니다... 3 추천캐릭 2014.11.22 0/0
질문 오랫만에 와서 질문하나 할게요;; 12 으뜸어린이 2014.11.26 0/0
질문 크롬에서는 controlclick, PostMessage 사용하면 활성... 2 시에 2014.11.22 0/0
질문 오핫 GUI 입력값 변수사용에 대한 질문입니다. 3 레이븐 2014.11.24 0/0
자유 난리 났네요 ㅎㅎ 여러분 백업 잘해두세요 ㅠ 14 으뜸어린이 2014.11.27 0/0
질문 PixelGetColor 기반으로 만든 매크로 공유 힘들까요? 6 rh1406 2014.11.25 0/0
질문 오토핫키 좋은 강좌점요 1 현이내 2014.11.24 0/0
정보 소스 여러 파일로 관리 하는 팁 7 묵치기 2015.01.20 0/0
질문 데스크탑과 노트북 차이점이 멀까요? 이미지 서칭이 호... 8 발자국 2014.11.26 0/0
자유 지니모션용 오토핫키 만들어 쓰려다가 6 팝스타리아 2014.11.28 0/0
Board Pagination Prev 1 ... 456789101112 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글