识别通过框架生成的对象,而不是通过原始HTML构建的对象

时间:2014-06-25 20:54:18

标签: selenium-webdriver sproutcore browser-automation

我有一个场景,我无法在页面上识别我的一些对象。它们没有唯一标识符(如name,class,id)。我们的开发团队使用JS框架生成模型,视图,控制器等,并动态分配id。还有许多子视图可以通过动态id动态生成。

所以我不能使用id来改变它。我不想使用xpath,因为它不是行业标准。我尝试了css选择器,但它给了我一条很长的路径,不确定这是不是正确的方法。

我想从大家那里了解到,为了测试目的,在开发代码中为对象添加额外属性是否正确?或者有更好的方法来处理这些情景吗?

1 个答案:

答案 0 :(得分:4)

如果您实际使用的是SproutCore,则可以轻松地将classNamesdoc link)或layerIddoc 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选择器。