我有一个测试工具,运行在我们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(),则此操作很好。但是,在我的例子中,我需要对现有按钮执行onclick。实际上,我想做以下操作,以允许我模拟单击按钮:
-
获取对现有WinForms按钮的引用
-
将按钮转换为自定义pybutton子类(允许onclick)
-
打电话给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))