机器人框架与sencha extjs

时间:2015-05-28 14:31:55

标签: extjs robotframework

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

3 个答案:

答案 0 :(得分:0)

这不是一个很好的解决方案,所以希望其他人可以找到一个易于实现的插件或其他东西。但是,如果您没有找到不同的方法,则可以通过将每个元素的“id”属性设置为唯一ID来手动为每个Ext.js元素提供ID。它不需要太多工作,如果你将它们命名为与它们实际相关的东西,它将使ID更具人性化。

来自Sencha文档:

  

id:String

     

此组件实例的唯一ID。

     

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

     

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

     

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

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

答案 1 :(得分:0)

有很多方法可以访问页面上的元素,使用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 :(得分:0)

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

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

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