【发布时间】:2009-11-16 09:23:41
【问题描述】:
我不熟悉 PowerBuilder,但我的任务是为 PB 创建自动 UI 测试应用程序。我们决定在 Python 中使用 pywinauto 和 iaccesible 库来实现。问题是无法从中访问一些 UI 元素,例如新添加的列表记录(即使是 inspect32 也无法获取)。 任何想法如何达到这些元素并使它们可测试?
【问题讨论】:
标签: python testing powerbuilder
我不熟悉 PowerBuilder,但我的任务是为 PB 创建自动 UI 测试应用程序。我们决定在 Python 中使用 pywinauto 和 iaccesible 库来实现。问题是无法从中访问一些 UI 元素,例如新添加的列表记录(即使是 inspect32 也无法获取)。 任何想法如何达到这些元素并使它们可测试?
【问题讨论】:
标签: python testing powerbuilder
我也在试验用于自动化基于 PowerBuilder 的 GUI 的工具的代码。据我所知,最好的选择是使用 PowerBuilder 本地接口 (PBNI),并从 NVO 中调用 PowerScript 代码。
如果您愿意,请随时给我发送电子邮件(请参阅我的个人资料以获取我的电子邮件地址),我有兴趣就如何做到这一点交流想法。
【讨论】:
我有一段时间没有使用 PowerBuilder,但我想您尝试解决的问题与我尝试解决的问题类似,这些问题是针对使用 Wonderware Intouch 等 SCADA 系统进行项目的人们。
这种应用程序的问题是没有 API 来获取或设置控件的值。所以 pywinauto 方法行不通。
我制作了一个小工具来模拟用户事件并从屏幕截图中获取结果。我使用 PIL 和 pytesser ORM 来分析屏幕截图。这不是最简单的方法,但可以正常工作。
该工具是开源免费的,可以从my website 下载(对不起,法语)。您只需要一个帐户,但它也是免费的。随便问问。
如果你会读法语,这里是one article about testing Intouch-based applications
很抱歉自我推销,但我遇到了类似的问题但没有解决方案,所以我自己写了。无论如何,这是免费和开源的......
【讨论】:
我在 AutomatedQa 支持中看到他们推荐使用 msaa 并在控件上设置一些属性的配方。不知道行不行。
【讨论】:
如果您正在测试 DataWindows(类是 pbdwxxx,例如 pbdw110),您将必须使用单击特定坐标和发送 Tab 键的组合来获得您想要的控件。当然,您也可以发送上下箭头键在行间移动。最简单的做法是从 SLE 之类的普通控件开始,然后将选项卡放入 DataWindow。问题是 DataWindow 本质上只是一个图像。在您通过单击或 Tab 键将焦点移到那里之前,没有对给定字段的控制。我还发现DataWindow 的iAccessible 界面有点奇怪。如果您向 DataWindow 询问具有焦点的对象,您不会得到正确的答案。如果你列举所有的孩子,你可以找到一个有重点的孩子。如果您可以修改源代码,我还建议您为 DataWindow 控件设置 AccessibleName,否则您可能无法识别除位置之外的控件(DataWindow 控件是指 DataWindow 内的控件,而不是 DataWindow 本身) .如果它是一个 MDI 应用程序,您可能还会发现定位 MicroHelp 窗口(类 fnhelpxxx,例如 fnhelp110,从应用程序主窗口中找到)有助于确定您当前的上下文。
编辑添加: Sikuli 看起来非常适合测试 PowerBuilder。它通过从保存的屏幕截图片段中识别屏幕上的对象来工作。也就是说,您截取您希望它找到的屏幕部分的屏幕截图。
【讨论】: