的一種方法,將與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)
以獲取列表的項目視圖。