0

だから私は長い間これに対する答えを探していて、以下に書く一時的な解決策を思いつきましたが、もっとエレガントなものがあるかどうか疑問に思っていましたか?

作業中のアプリケーションには、10、25、50、100 の 4 つの値のいずれかを含む weblist があります。値を選択すると、もちろん選択した値に応じて、以下の Web テーブルに 10、25、50、または 100 の結果が表示されます。

たとえば、標準の Obj.Select "100" を呼び出すと、リスト ボックスが 100 に変更されますが、他には何も起こりません。イベントはトリガーされないため、以下の Web テーブルは同じままです。手動で 100 を選択すると、Web テーブルが更新されて 100 レコードが表示されます。

Web リストに対してさまざまなイベントを発生させようとしましたが、どれも Web テーブルを更新していないようです。

最終的に、私は以下の解決策に落ち着きました:

Public Function CustomSelect(obj, strValue)

Dim intCounter, strProperty, boolItemInList, strEnabledOrDisabled, arrAllItems, strAllItems
Dim xCoord, yCoord

If strValue = "@@" Then
   Call AddComment("Passed in @@, skipping set function")
   Exit Function
End If

Reporter.Filter = rfEnableErrorsOnly
strProperty= obj.GetTOProperty("name")

If strProperty= "" Then 
    strProperty= obj.GetTOProperty("html id")
End If

Reporter.Filter = rfEnableAll

If obj.exist(5) Then
    XCoord = obj.GetROProperty("abs_x")
    YCoord = obj.GetROProperty("abs_y")
    strEnabledOrDisabled = obj.GetROProperty("disabled")
    If strEnabledOrDisabled = 0 Or strEnabledOrDisabled = "0" Then
        strAllItems = obj.GetROProperty("all items")
        arrAllItems = split(strAllItems,";")
        For intCounter = LBound(arrAllItems) to Ubound(arrAllItems)
            'Obj.SendKeys "{DOWN}"
            Obj.Select "#" & intCounter
            If arrAllItems(intCounter) = strValue Then
                Exit For
            End If
        Next
    Else
        Call ReportExpectedVsActual("Weblist is disabled: " & strProperty, False, True)
    End If
Else
    Call ReportExpectedVsActual("Weblist doesnt exist: " & strProperty, True, False)
End If

End Function

RegisterUserFunc "WebList", "CustomSelect", "CustomSelect"

少し面倒に見えることはわかっていますが、現時点で機能させるために考えられるのはそれだけです。他に何を試すべきか考えている人はいますか?

乾杯

ニック

4

1 に答える 1

1

少なくとも次の 2 つのことを試してください。

Web ページのソースを調べて、アクションがどのようにトリガーされるかを確認してください。それは次のようなものである可能性があり、それに添付されているonchange='RefreshIt();'ことがわかります。EventHandlerその場合は、もう少し深く掘り下げる必要があります。

ページを更新するイベントを特定した場合は、 でリストを更新した後、そのイベントを発生させてみてくださいWebListObject.FireEvent {yourEvent}yourEventonchange、onclick、ondblclick、onblur、onfocus、onmousedown、onmouseup、onmouseover、onmouseout、onsubmit、onreset、または onpropertychange を含む文字列にすることができます。

さらに単純な (ただし、制御が少なくなる) 別の方法を試してみる価値があります。これは設定によって行われます: に移動しTools > Options、ツリー ビューで を選択しますWeb > AdvancedRun only clickのチェックボックスとラジオボタンを変更するとどうなるか試してくださいReplay type

于 2013-02-05T16:39:18.040 に答える