我正在研究一些UI自动化软件,最近刚刚将项目从Python移到IronPython,因为该项目的要求表明它只会在Windows环境中使用。但是,我需要自动化使用Windows Presentation Foundation(WPF)的程序的UI。我发现这个库看起来像是白色的。
所以我想在我的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的代码的帖子。我该怎么做呢?
答案 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应该会有所帮助。