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
絶対的です
私は次のことを考えています(非常に疑似コードで):
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
1 つずつ反復するまで続けます。
この種の「検索」を行う一般的に受け入れられているより良い方法はありますか? どんな入力でも大歓迎です。ありがとう