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