SAP GUI 화면에서 요소를 목록에 추가하는 스크립트를 작성하고 있습니다. 이제는 SAP GUI를 사용할 때 화면에 실제로 있지 않으면 "존재하지 않는"것으로 보이지 않으므로 첫 번째 단계에서는 목록의 끝을 찾아야합니다.목록의 끝을 찾는 알고리즘 (SAP GUI)
나는 각 요소를 스크롤하여 공백인지 확인했다.
Do While Not blank
If session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010/ctxtMAPL-MATNR[2,0]").Text = "" Then blank = True
session.findById("wnd[1]/usr/tblSAPLCZDITCTRL_4010").verticalScrollbar.Position = i
i = i + 1
Loop
그러나 매우 큰 기존 목록의 경우 시간이 오래 걸립니다. 나는 끝을보다 빨리 발견 할 수있는 방법을 찾아 내려고 노력하고있다. 내가 알고있는 몇 가지 진실/제한 :
- 나는 목록 길이에 대해 알지 못한다.
- 나는
verticalScrollbar.position
을 초과하여 명령을 내릴 수 없으며,
목록의 끝 부분을 넘는다. 예를 들어. 목록에 62 개의 요소가 포함되어 있으면.verticalScrollbar.Position = 100
이 작동하지 않습니다. - 위 예제의 경우 SAP는 오류를 발생시키지 않습니다. 전혀 아무 일도 일어나지 않고 다음 코드 행이 실행됩니다.
- 요소에 대한 모든 참조는 화면에서의 위치와 관련됩니다. 나는 5 개 위치를 아래로 스크롤 경우 예는, 전체 목록의 6 요소는 실제로 다른 한편으로 1.
- 로 색인 것,
verticalScrollbar.Position
내가 다음 (매우에서 무엇을 생각하고
절대 psuedocode) :
i = 0
do while scrolled = true
scrolled = false
a = GUIlist[0]
verticalScrollbar.Position = i + 1000
b = GUIlist[0]
'check to see the first element shown has changed
if a <> b then
scrolled = true
i = i + 1000
end if
loop
do while scrolled = true
scrolled = false
a = GUIlist[0]
verticalScrollbar.Position = i + 500
b = GUIlist[0]
if a <> b then
scrolled = true
i = i + 500
end if
loop
... 등등 내가 하나 i
을 반복하고있어 때까지.
이런 종류의 '검색'을 수행하는 일반적으로 허용되는 더 나은 방법이 있습니까? 모든 의견을 보내 주시면 감사하겠습니다. 감사