如何将白色项目导入IronPython程序?

时间:2011-10-24 14:43:30

标签: wpf windows ironpython ui-automation white

我正在研究一些UI自动化软件,最近刚刚将项目从Python移到IronPython,因为该项目的要求表明它只会在Windows环境中使用。但是,我需要自动化使用Windows Presentation Foundation(WPF)的程序的UI。我发现这个库看起来像是白​​色的。

http://white.codeplex.com/

所以我想在我的IronPython程序中使用它,但到目前为止我用于导入用C#或C#接口编写的模块的所有示例代码都用于Microsoft / Windows内置函数。我想我应该能够引用它,因为你可以根据这篇文章用IronRuby来做它。

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

但是,我必须想象IronRuby导入/引用White的方法/语法与IronPython的方式非常不同。我还发现其他开发者的帖子说他们正在使用IronPython和White,但找不到包含实际引用White的代码的帖子。我该怎么做呢?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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应该会有所帮助。