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

  這個還是我在剛開始學習selenium的時候做的,自己覺得有點意思,在接下來我會基于目前我對于selenium的一些深入研究,寫下我對selenium的理解以及UIAutomation的一些理解,以此開篇吧^_^
  前段時間研究Selenium,寫了一些測試網(wǎng)頁的代碼,寫著寫著,感覺這些自動化cases的相似度太高,多數(shù)是大同小異,基本上可以歸納為這樣三步1)找到元素 2)進行操作, 比如點擊或者滑動 3) 驗證期望, 比如跳轉到了一個新頁面,或者新元素出現(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"
  寫的多了,這時候想,能不能有什么模板,讓我們快速的創(chuàng)建一條case,甚或者能讓一個不會Selenium的Tester也能寫自動化case呢。
  說做做,后搞出來了下面一個雛形, 我們可以定義這樣的一個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>
  然后我們可以這樣來解析:
  第一步解析XML生成TestCase的list,在例子中一個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

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