매크로

질문
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
분류 제목 글쓴이 최근변경 추천
질문 bkvcqr 님 오토핫키 질문있습니다. [ ClassNN값 ] 3 최키라웃 2023.02.24 0/0
질문 이런거 짤려면 뭐 이용해야하나요?? skkcx 2023.02.24 0/0
질문 녹스 이미지서치 오류 때문에 여쭤봅니다! 12 a1237694 2023.02.24 0/0
자유 메이플 채집,채광 매크로 구합니다 차니90 2023.02.24 0/0
질문 블루스택5 postmessage 성공하신분계신가요? 침묵의고요 2023.02.24 0/0
질문 하드인증 풀 수 있으신분 계신가요? 2 spuo 2023.02.24 0/0
자유 이 곳도 예전에는 실력자분들이 되게 많으셨는데.. bkvcqr 2023.02.24 0/0
질문 간단한 오토핫키 사용 질문입니다 1 그게그거 2023.02.24 0/0
질문 군주온라인 오토 구합니다~! 복덩대디 2022.05.16 0/0
자유 스타크레프트 땅파기2 메크로 외주 구합니다 1 혀니 2023.02.24 0/0
자유 오핫 뚫었습니다 4 ysw720 2023.03.19 0/0
질문 리니지 2.0 버젼 오토핫키 공부중입니다. 5 강냉이ekd 2023.03.06 0/0
질문 녹스 앱플레이어 프로세스 명 관련 앝텀 2023.02.24 0/0
질문 오토핫키 랜덤 실행 어떻게 할까요? 4 도지운 2023.02.24 0/0
질문 리스트뷰 저장관련 질문드립니다 2 바벌퀴레 2023.02.24 0/0
자유 바람의나라 프리서버 오토핫키 제작 구매합니다 졍38 2023.02.24 0/0
질문 메이플 해볼려고 하는데요 3 11도 2023.02.24 0/0
질문 선배님들 매크로를 처음 배워보려하는데요 6 자꾸만궁금해 2022.04.23 0/0
질문 와이로님의 오토핫키플러스는 더이상 구할 수 없는 건... 3 pimelo 2023.02.24 0/0
자유 오토핫키 디컴파일합니다. 6 whyno 2024.03.12 0/0
Board Pagination Prev 1 ... 456789101112 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글