測試對象定位一般都是各種web自動化測試框架或工具的核心內(nèi)容。
selenium-Webdriver的對象定位方法非常的豐富和強大。一般來說強大的對象定位都會提供如下的一些方法。
·單個對象的定位方法
·多個對象的定位方法
·層級定位
selenium-Webdriver很好的支持了上述的3種定位方式。
定位單個對象
在定位單個對象時,selenium-Webdriver支持使用如下的一些屬性對元素進行定位。
	:class             => 'class name',
	:class_name        => 'class name',
	:css               => 'css selector',
	:id                => 'id',
	:link              => 'link text',
	:link_text         => 'link text',
	:name              => 'name',
	:partial_link_text => 'partial link text',
	:tag_name          => 'tag name',
	: xpath             => 'xpath',
使用class或class_name進行定位
當(dāng)所定位的對象具有class屬性的時候我們可以通過class或class_name來定位該對象。
下面的例子定位了soso首頁上class為"new"的span。
	require 'rubygems'
	require 'selenium-webdriver'
	require 'pp'
	url = %q{http://www.soso.com/}
	dr = Selenium::WebDriver.for :ie
	dr.navigate.to url
	sleep 1
	new_icon = dr.find_element(:class => 'ico_new')
	puts new_icon.tag_name # ---> span
使用id屬性定位
soso首頁的搜索輸入框的html代碼如下:
<input type="text" name="w" smartpid="sb.idx" smartch="sb.c.idx" autocomplete="off" id="s_input" value="">
在進行定位前我們先動態(tài)定義highlight方法,該方法的作用是高亮顯示有id屬性的頁面元素。
隨后的代碼演示了如何使用id屬性來定位soso首頁上的搜索輸入框。
	require 'rubygems'
	require 'selenium-webdriver'
	require 'pp'
	Selenium::WebDriver::Element.module_eval do
	def highlight
	e_id = self.attribute('id')
	puts "#{e_id} = e_id"
	js = <<JS
	document.getElementById("#{e_id}").style.border = "3px solid red"
	JS
	@bridge.executeScript(js) if e_id
	end
	end
	url = %q{http://www.soso.com/}
	dr = Selenium::WebDriver.for :ie
	dr.navigate.to url
	sleep 1
	s_input = dr.find_element(:id => 's_input')
	# 或者使用語法糖衣
	# s_input = dr['s_input']
	s_input.highlight