的一种方法,将与SproutCore的工作是使用SproutCore的视图树来标识元素而不是按层ID或类。例如,考虑这个基本的主网页,
MyApp.mainPage = SC.Page.create({
mainPane: SC.MainPane.extend({
childViews: ['header', 'mainContent', 'footer'],
header: SC.ToolbarView.extend({
layout: { height: 44 },
childViews: ['headerButton'],
headerButton: SC.ButtonView.extend({
layout: { centerX: 0, centerY: 0, height: 40, width: 100 },
title: "Click Here"
})
}),
mainContent: SC.View.extend({
layout: { top: 44, bottom: 33 },
// etc.
虽然我们不知道这些元件的层IDS事前,我们知道在JavaScript中的父子关系。举例来说,如果我需要某些元素从页面,我可能会抓住他们提前像这样,
// Retrieve target views for the current page.
var mainPane = MyApp.mainPage.get('mainPane'),
header = mainPane.get('header'),
headerButton = header.get('headerButton'),
// … etc.
// Then retrieve an element for acting upon.
var buttonLayer = headerButton.get('layer'); // returns a DOM node
// Or retrieve an element id for acting upon.
var buttonLayerId = headerButton.get('layerId'); // returns the auto-generated id
虽然我没有与硒的第一手经验,看来,你可以使用execute_script的webdriver实例方法运行一些简单的查找,返回您需要的元素或您需要的元素的ID。
最后,请记住,一些意见可能会有动态变化的儿童,特别是SC.CollectionView
子类如SC.ListView
。在这种情况下,一旦您定位到父视图,您就可以使用特定于该父视图的方法轻松访问您需要的子项,例如itemViewForContentIndex(idx)
以获取列表的项目视图。