【问题标题】:How to encapsulate Watir browser instance in a GUI using Ruby?如何使用 Ruby 在 GUI 中封装 Watir 浏览器实例?
【发布时间】:2012-11-02 16:16:41
【问题描述】:

基本上,我正在使用 Watir 为多个站点编写一个测试应用程序。但是,也有最终用户(可以假定他们是不熟悉命令行、使用 Windows 的典型用户)。现在,我想给他们看点东西,比如说,视觉上发生了什么(应客户的要求,sigh)。

我将制作一个 GUI,显示用于测试网站的表单数据(表单、用户名、名称等的随机信息)以及正在发生的事情。我想要一个预览窗口,比如 C#.NET 中的 WebBrowser 类。

是否有一种简洁的方法可以在 Ruby 中使用 Watir(或 Watir-WebDriver)在 GUI(wxRuby、Shoes 等)中限制/封装(想知道要使用什么其他短语)浏览器实例?

(注意:这是在 Windows 机器上运行的)

【问题讨论】:

    标签: ruby user-interface testing watir watir-webdriver


    【解决方案1】:

    这个要求有点高。 Watir 本身只是从命令行运行,因此您需要查看是否有一种方法可以使用您正在使用的操作系统中的命令行窗口来执行您想要的操作。但是随后 watir 调用了浏览器的一个实例(使用 Watir-webdriver 可以是大量不同的浏览器),每个都是他们自己的野兽,以自己的方式与操作系统和 UI 做出反应,我没有知道你可能会以你描述的方式“包装”IE、Chrome 或 Firefox。

    从这个角度来看,是否有办法包装虚拟机的界面可能更容易? (也许用 virtualbox 或 vmware 来做这件事?)

    如果你问我,这似乎是一个非常古怪的要求,我很难看到你被要求做的事情的商业价值。

    【讨论】:

    • 我觉得这可能有点奇怪。至于商业价值?真的没有。客户端想要“查看”浏览器在做什么,但一次只打开一个应用程序窗口(不希望命令提示符和 IE 同时打开)。我可能会告诉他,这是不可能的。此外,vm 包装将超出我的项目截止日期和他们的预算范围。因为他们会付钱让我学习这个。
    【解决方案2】:

    如果你使用的是 watir-classic,你可以隐藏你的 IE 窗口:

    ie = Watir::Browser.new
    ie.visible = false
    

    如果您的要求是隐藏浏览器窗口并仅显示日志/状态消息的控制台窗口,这可能会有所帮助。

    如果您使用的是 Watir WebDriver/Selenium,我不确定是否有类似的方法可用。在快速搜索中,我什么也没看到。

    IWebBrowser2“可见”属性可能有用 - 如果 Watir WebDriver 尚不支持,则不确定将其修补到其中有多难:

    http://msdn.microsoft.com/en-us/library/aa752082(v=vs.85).aspx

    【讨论】:

    • 我很熟悉隐藏窗口,它的 包装 我想看到它是可能的。不过,我想我现在已经让我的客户摆脱了这种状态。
    • 啊,我想我现在明白了——听起来目标是编写一个包含由 Watir 驱动的浏览器窗口的 GUI 应用程序。我认为这是可能的,但可能仅在 IE 中 - 您必须生成嵌入在 GUI 应用程序中的 ActiveX IE 控件,然后将 Watir 附加到浏览器。它可能需要也可能不需要一些 COM hack 来实现;看到这个:wolfewebservices.com/blog/attaching-watir-embedded-ie-browser
    猜你喜欢
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2018-05-04
    • 1970-01-01
    相关资源
    最近更新 更多