首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有sencha extjs的robotframework

带有sencha extjs的robotframework
EN

Stack Overflow用户
提问于 2015-05-28 22:31:55
回答 3查看 441关注 0票数 0

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

EN

回答 3

Stack Overflow用户

发布于 2015-05-29 03:37:37

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

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2015-05-28 23:15:43

这不是一个很好的解决方案,所以希望其他人能找到一个插件或容易实现的东西。但是,如果找不到不同的方法,可以手动为每个Ext.js元素分配一个ID,方法是自己将每个元素的" ID“属性设置为一个惟一的ID。这不需要太多的工作,如果你给它们命名一些与它们是什么相关的东西,这将使ID更具人类可读性。

从Sencha文档中:

字符串id:

此组件实例的唯一id。

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

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2015-06-11 02:50:04

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

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

此外,Ext只需指定id属性,就可以在组件上放置惟一的id。我建议将ids应用于您希望通过测试与之交互的所有元素,从而消除对复杂行为的任何需求,从而使界面自动化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30509571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档