【问题标题】:How to make PowerBuilder UI testing application?如何制作 PowerBuilder UI 测试应用程序?
【发布时间】:2009-11-16 09:23:41
【问题描述】:

我不熟悉 PowerBuilder,但我的任务是为 PB 创建自动 UI 测试应用程序。我们决定在 Python 中使用 pywinauto 和 iaccesible 库来实现。问题是无法从中访问一些 UI 元素,例如新添加的列表记录(即使是 inspect32 也无法获取)。 任何想法如何达到这些元素并使它们可测试?

【问题讨论】:

    标签: python testing powerbuilder


    【解决方案1】:

    我也在试验用于自动化基于 PowerBuilder 的 GUI 的工具的代码。据我所知,最好的选择是使用 PowerBuilder 本地接口 (PBNI),并从 NVO 中调用 PowerScript 代码。

    如果您愿意,请随时给我发送电子邮件(请参阅我的个人资料以获取我的电子邮件地址),我有兴趣就如何做到这一点交流想法。

    【讨论】:

      【解决方案2】:

      我有一段时间没有使用 PowerBuilder,但我想您尝试解决的问题与我尝试解决的问题类似,这些问题是针对使用 Wonderware Intouch 等 SCADA 系统进行项目的人们。

      这种应用程序的问题是没有 API 来获取或设置控件的值。所以 pywinauto 方法行不通。

      我制作了一个小工具来模拟用户事件并从屏幕截图中获取结果。我使用 PIL 和 pytesser ORM 来分析屏幕截图。这不是最简单的方法,但可以正常工作。

      该工具是开源免费的,可以从my website 下载(对不起,法语)。您只需要一个帐户,但它也是免费的。随便问问。

      如果你会读法语,这里是one article about testing Intouch-based applications

      很抱歉自我推销,但我遇到了类似的问题但没有解决方案,所以我自己写了。无论如何,这是免费和开源的......

      【讨论】:

      • 嗨。除了一些例外,我们的 Python 应用程序运行良好。我们不直接设置控制值,而是对系统说:“转到休闲位置 x,y 输入一些文本并单击输入”我们正在使用 pywinauto 和 iaccesible 来查找控制并获取位置、值等。但是问题是 pywinauto 或 iaccesible 无法找到某些元素。
      【解决方案3】:

      我在 AutomatedQa 支持中看到他们推荐使用 msaa 并在控件上设置一些属性的配方。不知道行不行。

      【讨论】:

      • 使用 MSAA 辅助测试的局限性在于 PowerBuilder 仅提供开发人员明确提供的 MSAA 信息,但有几个例外。请注意,我在这里说的是经典的 PB,我没有在 WinForms 中闲逛。我已经为我们中间层的许多 PFC 控件添加了 MSAA 支持。
      【解决方案4】:

      如果您正在测试 DataWindows(类是 pbdwxxx,例如 pbdw110),您将必须使用单击特定坐标和发送 Tab 键的组合来获得您想要的控件。当然,您也可以发送上下箭头键在行间移动。最简单的做法是从 SLE 之类的普通控件开始,然后将选项卡放入 DataWindow。问题是 DataWindow 本质上只是一个图像。在您通过单击或 Tab 键将焦点移到那里之前,没有对给定字段的控制。我还发现DataWindow 的iAccessible 界面有点奇怪。如果您向 DataWindow 询问具有焦点的对象,您不会得到正确的答案。如果你列举所有的孩子,你可以找到一个有重点的孩子。如果您可以修改源代码,我还建议您为 DataWindow 控件设置 AccessibleName,否则您可能无法识别除位置之外的控件(DataWindow 控件是指 DataWindow 内的控件,而不是 DataWindow 本身) .如果它是一个 MDI 应用程序,您可能还会发现定位 MicroHelp 窗口(类 fnhelpxxx,例如 fnhelp110,从应用程序主窗口中找到)有助于确定您当前的上下文。

      编辑添加: Sikuli 看起来非常适合测试 PowerBuilder。它通过从保存的屏幕截图片段中识别屏幕上的对象来工作。也就是说,您截取您希望它找到的屏幕部分的屏幕截图。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-15
        • 2012-04-05
        • 2017-05-20
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多