您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Selenium
Selenium webdriver系列教程(4)?如何定位測(cè)試元素
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/9/18 13:22:07 ] 推薦標(biāo)簽:

  當(dāng)使用id定位到正確的元素后,highlight方法會(huì)將該元素以紅色高亮顯示,借此也可以驗(yàn)證代碼是否工作正常。

  使用name屬性定位

  soso首頁的搜索輸入框的html代碼如下:

  <input type="text" name="w" smartpid="sb.idx" smartch="sb.c.idx" autocomplete="off" id="s_input" value="">

  # 同樣定位soso首頁的搜索框

  s_input = dr.find_element(:name => 'w')

  使用css屬性定位

  soso首頁的搜索輸入框的html代碼如下:

  <input type="text" name="w" smartpid="sb.idx" smartch="sb.c.idx" autocomplete="off" id="s_input" value="">

  官方文檔上說Selenium-WebDriver支持css3語法,這對(duì)使用jquery的同學(xué)來說無疑是一個(gè)好消息。

  # css屬性定位soso首頁搜索框

  s_input = dr.find_element(:css => '#s_input')

  使用xpath定位

  soso首頁的搜索輸入框的html代碼如下:

  <input type="text" name="w" smartpid="sb.idx" smartch="sb.c.idx" autocomplete="off" id="s_input" value="">

  # 使用xpath定位soso首頁搜索框

  s_input = dr.find_element(:xpath => %Q{//input[@id='s_input' and @name='w']})

  使用其他方式定位

  在定位link對(duì)象的時(shí)候,可以使用link和link_text屬性;

  另外還可以使用tag_name屬性定位任意元素;

  定位多個(gè)元素

  find_elements方法可以定位一組對(duì)象,例如

# 定位頁面上所有的link對(duì)象
all_links = driver.find_elements(:tag_name, 'a')
all_links.each do {|l| puts l.class} # ---> Selenium::WebDriver::Element

  上面的代碼返回頁面上所有l(wèi)ink對(duì)象的數(shù)組

  下面代碼演示了如何選取頁面上所有的button對(duì)象:

all_buttons = driver.find_elements(:tag_name, 'input').select do |i|
i['type'] == 'button'
end

  層級(jí)定位

  層級(jí)定位的思想是先定位父對(duì)象,然后再從父對(duì)象中精確定位出其我們需要選取的后代元素。

  層級(jí)定位一般的應(yīng)用場(chǎng)景是無法直接定位到需要選取的元素,但是其父元素比較容易定位,通過定位父元素再遍歷其子元素選擇需要的目標(biāo)元素,或者需要定位某個(gè)元素下所有的子元素。

  下面的代碼演示了如何使用層級(jí)定位選取id為bm的div下所有的link元素,并打印出所有其href

links = dr.find_element(:id, 'bm').find_elements(:css => 'a')
links.each do |l|
puts l['href']
end

  這一節(jié)分享了Selenium-WebDriver定位元素的一般方法,下一節(jié)將介紹Selenium-WebDriver對(duì)frame的處理

相關(guān)鏈接:
上一頁12下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd