我有一个测试工具,在我们的C#应用程序中运行在嵌入式IronPython引擎中。一些测试是UI自动化,模拟按钮点击等。
# assume code to find an existing button, 'b' is an instance of System.Windows.Forms.Button
b.OnClick(EventArgs())
我遇到的问题是上面的代码适用于IPy 2.0.2而不适用于2.6。阅读下面的链接,我可以看出为什么它不再起作用。
http://dlr.codeplex.com/Thread/View.aspx?ThreadId=57324
所以我创建了一个python子类,如下所示:
class PyButton(Button):pass
如果要创建PyButton的新实例并尝试OnClick(),这可以正常工作。但是,就我而言,我需要针对现有Button执行OnClick。基本上我想做以下事情,让我模拟按钮上的点击:
我尝试使用clr.Convert:
import clr
from System.Windows.Forms import *
class PyButton(Button):pass
# assume b = existing button
pb = clr.Convert(b, clr.GetClrType(PyButton))
...但是得到了这个错误:
expected Button_2$2, got Button
input was pb = clr.Convert(b, clr.GetClrType(PyButton))