我有一个场景,我无法在页面上识别我的一些对象。它们没有唯一标识符(如name,class,id)。我们的开发团队使用JS框架生成模型,视图,控制器等,并动态分配id。还有许多子视图可以通过动态id动态生成。
所以我不能使用id来改变它。我不想使用xpath,因为它不是行业标准。我尝试了css选择器,但它给了我一条很长的路径,不确定这是不是正确的方法。
我想从大家那里了解到,为了测试目的,在开发代码中为对象添加额外属性是否正确?或者有更好的方法来处理这些情景吗?
答案 0 :(得分:4)
如果您实际使用的是SproutCore,则可以轻松地将classNames
(doc link)或layerId
(doc link)属性添加到任何视图中CSS选择器更短。
例如:
MyApp.MainListView = SC.ListView.extend({
layerId: 'my_special_view',
classNames: 'my-special-class',
content: ["Hi", "Foo", "Bar"],
exampleView: SC.ListItemView.extend({
classNames: 'my-special-list-class'
})
})
注意:如果您肯定在屏幕上只有1个视图实例,那么您将只想使用layerId
属性,否则,{ {1}}属性是更好的方式。
我建议添加一些不是特定测试的类名,但允许你使用更短的CSS选择器。