【问题标题】:robotframework with sencha extjs带有 sencha extjs 的机器人框架
【发布时间】:2015-06-11 02:50:04
【问题描述】:

我将使用机器人框架来测试一个使用 sencha extjs 库的应用程序, 我的问题是,使用这个库,ID 每次都是动态生成的 这会添加新组件,因此我的机器人框架脚本会改变 不断,但这是一个坏主意。有人说我说其他测试框架 它有这个任务的插件,但我在机器人框架中找不到。 提前致谢。

【问题讨论】:

  • 考虑使用Siesta。我不会添加手动 ID。

标签: extjs robotframework


【解决方案1】:

有很多方法可以访问页面上的元素,使用 id 只是一种方法。假设您使用 Selenium2Library,您可以使用以下任何定位器策略(来自 Selenium2Library documentation):

Strategy        Example                                 Description
--------------- --------------------------------------- ---------------------------------
identifier      Click Element | identifier=my_element   Matches by @id or @name attribute
id              Click Element | id=my_element           Matches by @id attribute
name            Click Element | name=my_element         Matches by @name attribute
xpath           Click Element | xpath=//div[@id='my_element']   Matches with arbitrary XPath expression
dom             Click Element | dom=document.images[56] Matches with arbitrary DOM express
link            Click Element | link=My Link            Matches anchor elements by their link text
partial link    Click Element | partial link=y Lin      Matches anchor elements by their partial link text
css             Click Element | css=div.my_class        Matches by CSS selector
jquery          Click Element | jquery=div.my_class     Matches by jQuery/sizzle selector
sizzle          Click Element | sizzle=div.my_class     Matches by jQuery/sizzle selector
tag             Click Element | tag=div                 Matches by HTML tag name
default*        Click Link    | default=page?a=b        Matches key attributes with value after first '='

请注意,尽管某些示例(例如 xpath)显示了使用 id,但可能并不严格要求 id(显然,id= 和 identifier= 除外)。 xpath 通常是最后的策略,因为您可以引用文档中的几乎所有内容。有关 xpath 的更多信息,您可以从这里开始:http://en.wikipedia.org/wiki/XPath

【讨论】:

    【解决方案2】:

    这不是一个很好的解决方案,所以希望其他人可以找到一个插件或易于实现的东西。但是,如果您没有找到不同的方法,您可以手动为每个 Ext.js 元素指定一个 ID,方法是自己将每个元素的“id”属性设置为唯一 ID。这不会花费太多的工作,而且如果您将它们命名为与它们实际相关的名称,它将使 ID 更易于阅读。

    来自 Sencha 文档:

    id : 字符串

    此组件实例的唯一 ID。

    除了应用程序中的单例对象外,不需要使用此配置。使用 id 创建的组件可以>使用 Ext.getCmp 全局访问。

    不使用分配的 id,而是使用 itemId 配置和 ComponentQuery,后者提供基于选择器的 Sencha 组件搜索,类似于 DOM 查询。 Container 类包含通过选择器查询其后代组件的快捷方法。

    请注意,此 id 也将用作包含 HTML 元素的元素 id,该 HTML 元素呈现到此组件的页面。这允许您编写基于 id 的 CSS 规则来唯一地设置此组件的特定实例的样式,并且还可以使用此组件的 id 作为父级来选择子元素。

    来源:http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.AbstractComponent-cfg-id

    【讨论】:

      【解决方案3】:

      随着 Selenium2Library 1.7 的发布,用户现在可以创建自己的自定义定位器。您可以使用它来创建基于 ext 组件查询的位置方案。只要应用程序的整体结构没有太大变化,就足够了。有关自定义定位器的更多信息,请参阅 Selenium2Library docs

      我已经在github 上为 S2L 启动了一个附加库,您可以查看它以供参考,但它还没有完全完成。

      此外,Ext 允许您通过简单地指定 id 属性在组件上放置唯一的 id。我建议将 id 应用于您希望通过测试与之交互的所有元素,从而消除对自动化界面的复杂行为的任何需要。

      【讨论】:

        猜你喜欢
        • 2016-02-02
        • 2020-07-10
        • 2015-09-28
        • 2012-03-14
        • 2019-02-18
        • 2018-05-01
        • 1970-01-01
        • 2021-09-18
        • 2022-01-24
        相关资源
        最近更新 更多