2011-10-24 27 views
0

私はいくつかのUIオートメーションソフトウェアに取り組んでおり、最近このプロジェクトの要件にはWindows環境でのみ使用されるという要件があるため、プロジェクトをPythonからIronPythonに移行しました。しかし、Windows Presentation Foundation(WPF)を使用するプログラムのUIを自動化する必要があります。私は白と呼ばれる役に立つかもしれないこの1つの図書館を見つけました。ホワイトプロジェクトをIronPythonプログラムにインポートするにはどうすればよいですか?

http://white.codeplex.com/

だから、私はIronPythonのプログラムでこれを使用したいが、私はC#でまたはC#のインターフェースで書かれたモジュールをインポートするため、これまで見てきたすべてのコード例では、構築されたマイクロソフト/ Windows用となっています-ins。この記事でIronRubyを使って参照できるので、参照できるはずです。

http://www.natontesting.com/2010/02/17/how-to-test-a-wpf-app-using-ironruby-and-white/

しかし、私はIronRubyのホワイトIronPythonのは、それを行うだろうかよりも非常に異なっている/参照をインポートすることになるための手段/構文を想像しなければなりません。また、他の開発者がIronPythonとWhiteを使用していると言っている記事を見つけましたが、実際にWhiteを参照するコードを含む投稿は見つかりませんでした。私はこれについてどうやって行くのですか?

答えて

4
import clr 
clr.AddReference("White.Core") 
clr.AddReference("White.NUnit") 
from White.NUnit import * 
from White import * 
from White.Core import * 
from White.Core.Configuration import * 
from White.Core.UIItems import * 
from White.Core.UIItems.WindowItems import * 
from White.Core.UIItems.ListBoxItems import * 
from White.Core.UIItems.Container import * 
from White.Core.UIItems.Finders import * 
from White.Core.Factory import * 
from White.Core.Finder import * 
from White.Core.AutomationElementSearch import * 
from White.Core.WindowsAPI import * 

通常のように白いAPIを使用します。

app = Application.Attach(proc) 
win = app.GetWindow('Window Caption') 
print win.Name 
box = win.Get[MultilineTextBox]('textBoxId') 
print box.Text 
+0

これは、それが検索パス上にあるように、白の必要性を配置するん を偉大に見えますが、あなたは clr.AddReference(「White.Core」)を呼び出し clr.AddReference(「White.NUnit」)そのAddReference()は? –

+2

http://ironpython.net/documentation/dotnet/dotnet.htmlを参照してください。アセンブリは、アプリケーションのbinディレクトリまたはGACにある必要があります。別の場所にアセンブリがある場合は、 'clr.AddReferenceToFileAndPath'を完全修飾パスで使用することもできます。 –

+0

ああ、今私はrobowahooの最初の答えが何を話していたかを見ています。両方のおかげで! –

3

IronPythonのは、次を使用して、任意のCLRアセンブリに対処することができ:

import clr 

clr.AddReference("AssemblyName") 

白のプロジェクトは、これは動作しますベースの.NETですので。アセンブリからオブジェクトを使用するには:

from AssemblyName import * 

(もちろん、あなたがここにサブセットを使用することができます)

を次に単にあなたのオブジェクトをインスタンス化して使用します。

from System.Collections import BitArray 
ba = BitArray(5) 
ba.Set(0, True) # call the Set method 
ba[0] 

このdocumentation役立つはずです。

関連する問題