您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源功能測(cè)試工具 > Selenium
學(xué)習(xí)Selenium Python版初的一個(gè)小想法
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2015/3/13 15:15:26 ] 推薦標(biāo)簽:Selenium 單元測(cè)試 測(cè)試工具 Python 代碼 XML

  這個(gè)還是我在剛開始學(xué)習(xí)selenium的時(shí)候做的,自己覺(jué)得有點(diǎn)意思,在接下來(lái)我會(huì)基于目前我對(duì)于selenium的一些深入研究,寫下我對(duì)selenium的理解以及UIAutomation的一些理解,以此開篇吧^_^
  前段時(shí)間研究Selenium,寫了一些測(cè)試網(wǎng)頁(yè)的代碼,寫著寫著,感覺(jué)這些自動(dòng)化cases的相似度太高,多數(shù)是大同小異,基本上可以歸納為這樣三步1)找到元素 2)進(jìn)行操作, 比如點(diǎn)擊或者滑動(dòng) 3) 驗(yàn)證期望, 比如跳轉(zhuǎn)到了一個(gè)新頁(yè)面,或者新元素出現(xiàn)在屏幕中.
  比如下面:
  from selenium import webdriver
  from selenium.webdriver.support.wait import WebDriverWait
  def web_automation():
  browser=webdriver.Chrome()
  browser.get('http://www.baidu.com/')
  Input_element=browser.find_element_by_id('kw')
  Input_element.send_keys('Selenium')
  browser.find_element_by_id('su').click()
  result=browser.find_element_by_xpath('//*[@id="container"]/div[2]').is_displayed()
  assert result!=True,"Failed"
  寫的多了,這時(shí)候想,能不能有什么模板,讓我們快速的創(chuàng)建一條case,甚或者能讓一個(gè)不會(huì)Selenium的Tester也能寫自動(dòng)化case呢。
  說(shuō)做做,后搞出來(lái)了下面一個(gè)雛形, 我們可以定義這樣的一個(gè)XML:
<TestCase name="ClickBackButton" scriptVersion="1.0.0">
<Executable>Chrome</Executable>
<Address>http://www.baidu.com</Address>
<Action Operate="InputSearchInfo" Type="Input" ID="kw" Content="Glow"/>
<Action Operate="Scroll" Type="Scroll" />
<Action Operate="ClickNextPageHLink" Type="Click" XPath='//*[@id="page"]/a[10]'>
<Expected XPath='//*[@id="page"]/strong/span[2]' Text="2" />
</Action>
<Action Operate="Goback" Type="Back">
<Expected XPath='//*[@id="page"]/strong/span[2]' Text="1" />
</Action>
<Action Operate="Scroll" Type="Scroll" />
<Action Operate="ClickPage6" Type="Click" XPath='//*[@id="page"]/a[5]'>
<Expected XPath='//*[@id="page"]/strong/span[2]' Text="6" />
</Action>
<Action Operate="Goback" Type="Back">
<Expected XPath='//*[@id="page"]/strong/span[2]' Text="1" />
</Action>
</TestCase>
  然后我們可以這樣來(lái)解析:
  第一步解析XML生成TestCase的list,在例子中一個(gè)Testcase:
import xml.etree.ElementTree as ET
import logging
import os
import sys
import traceback
from TestCase import TestCase
class ParseCase:
def __init__(self,xml_path):
if os.path.exists(os.getcwd()+"\"+xml_path) or os.path.exists(xml_path):
self.caseList=[]
try:
xml=ET.parse(xml_path)
root=xml.getroot()
self.caseList=root.find('TestList').findall('TestCase')
except IOError as e:
print traceback.format_exc()
logging.debug(traceback.format_exc())
if self.caseList:
logging.info('No Testcase detected')
else:
logging.info('No Testcase detected')
else:
print "XML file is not exists"
logging.debug("XML file is not exists")
def getAllTestCaseList(self):
TestCases=[]
for case in self.caseList:
_testcase=TestCase(case)
TestCases.append(_testcase)
return TestCases

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