매크로

질문
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
분류 제목 글쓴이 최근변경 추천
질문 함수에 오류나는데 무슨 뜻인가요 ?? 1 wngo 2019.07.18 0/0
질문 함수안에서 다른 함수를 호출할 수 있나요? 3 거룩한검 2016.03.13 0/0
질문 함수사용과 이미지서치 도움좀 부탁드립니다.. 5 소다맛사탕 2018.01.04 0/0
질문 함수를 중복(동시)에 2~3개를 할 수 있을까요? 9 Rabbit 2016.05.17 0/0
질문 함수를 만들었는데 원하는대로 작동을 안하네요. 좀 봐... 3 cis105 2022.09.29 0/0
질문 함수를 랜덤으로 중복없이 실행시키려면 어떻게 하면될... MC하얀늑대 2016.02.15 0/0
질문 함수가 1일 경우 명령어를 실행 하는방법 없을까요? 4 아키만점 2015.02.16 0/0
자유 함수 파라메터 질문좀 드리겠습니다. 7 횬히 2015.10.08 0/0
질문 함수 질문드립니다 2 광대승천 2020.07.28 0/0
질문 함수 질문 있습니다!!! 2 adde 2018.07.24 0/0
질문 함수 이미지서치 투명!!베스트글 모바게님의 함수 질문... 2 혜띠뿌뿌 2016.03.29 0/0
질문 함수 안에서 gui체크박스 여부에 따라 적용되는건 어떻... 2 복권상인 2017.04.12 0/0
질문 함수 사용 질문입니다 ( 드랍다운리스트와 비활성 클릭) 1 몬길러축협 2015.11.16 0/0
질문 함수 사용 질문 6 빵글빵글 2018.10.03 0/0
질문 함수 불러와서 쓸 때 함수 내의 특정부분만 예외처리 ... 14 아이나인 2015.10.26 0/0
질문 함수 winmove 질문드립니다 4 PlusK 2016.05.29 0/0
질문 한창 공부 중인데 추천 해줄만한 책 있나요?? 1 Minuya 2017.07.05 0/0
질문 한줄짜리 비활성 클릭이 안되는 이유가 뭘까요... 데프픗 2017.12.10 0/0
질문 한영전환 문제 혹시 해결가능할가요 6 오핫정보공유 2015.08.25 0/0
질문 한스크립트안에 여러가지 스크립트를 넣어 놓을수 있나요? 4 세나블텍 2015.04.22 0/0
Board Pagination Prev 1 ... 456789101112 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글