0

TestComplete v8 でテスト スクリプトを実行しています。メモリ内のオブジェクト グラフが古くなっています (ダイアログが表示されたため)。

次の VBScript コードを実行します

Sys.Process("iexplore").RefreshMappingInfo()

そして、次のエラーメッセージが表示されます...

Unable to find the object RefreshMappingInfo. See Additional Information for details.

The object with the specified attributes does not exist.

Possible causes of the error

このエラーは、TC がメソッド呼び出しをコントロールを検索する試みとして解釈することに関連しています。

本当に奇妙なこと.. COM 経由で TC8 に接続し、同じコードを実行すると、正常に動作します。だからルビーで:

require 'win32ole'
tc = WIN32OLE.connect("TestComplete.TestCompleteApplication.8")
integration = tc.integration
Sys = integration.GetObjectByName("Sys")
puts Sys.Process("iexplore").Page("http://localhost:50563/x.aspx") _
  .Form("form1").Panel("silverlightControlHost").Object(0).UIAObject("Popup").Exists
' This returns false

Sys.Process("iexplore").RefreshMappingInfo()
' No error raised

puts Sys.Process("iexplore").Page("http://localhost:50563/x.aspx") _
  .Form("form1").Panel("silverlightControlHost").Object(0).UIAObject("Popup").Exists
' returns true

テスト中にこれが機能しないのはなぜですか?どうすれば修正できますか?

4

1 に答える 1

3

TestCompleteには、次の3つのオブジェクトツリーがあります。

  1. オブジェクトブラウザパネルにあり、すべてのアプリケーションオブジェクトを含むSysツリー。
  2. すべてのマッピング名を含むNameMappingツリー。
  3. テストが記録されるときに使用され、テスターに​​よって柔軟に変更できるエイリアスツリー。

Aliasesツリー内のオブジェクトはNameMappingツリー内のオブジェクトを参照し、後者のオブジェクトはSysツリー内のオブジェクトを参照しています。RefreshMappingInfoメソッドは、 NameMappingツリーのオブジェクトに格納されているこれらの参照をSysツリーのオブジェクトに更新するために使用さます。したがって、このメソッドは、NameMappingツリーAliasesツリーのオブジェクトに対してのみ存在します。

コードでは、SysツリーのオブジェクトSys.Process( "iexplore")を操作します。SysツリーのオブジェクトにはRefreshMappingInfoメソッドがないため、エラーが発生します。Refreshメソッドを呼び出すか、 NameMappingまたはAliasesツリーのオブジェクトを操作してみる必要があります。例えば:

  • Sys.Process( "iexplore")。Refresh()
  • Aliases.IExplore.RefreshMappingInfo()
于 2012-12-18T05:28:46.750 に答える