2011-10-24 4 views
0

Я работаю над некоторым программным обеспечением для автоматизации пользовательского интерфейса и недавно перевел проект с Python на IronPython, так как требования к этому состоянию проекта будут использоваться только в среде Windows. Однако мне нужно автоматизировать пользовательский интерфейс программы, использующей Windows Presentation Foundation (WPF). Я нашел эту библиотеку, которая выглядит так, как будто ее можно было бы назвать белой.Как импортировать белый проект в программу IronPython?

http://white.codeplex.com/

Так что я хотел бы использовать это в моей программе IronPython, но весь пример кода я видел до сих пор для импорта модулей, написанных на C# или с C# интерфейса был для Microsoft/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 должно помочь.

Смежные вопросы