這個(gè)還是我在剛開(kāi)始學(xué)習(xí)selenium的時(shí)候做的,自己覺(jué)得有點(diǎn)意思,在接下來(lái)我會(huì)基于目前我對(duì)于selenium的一些深入研究,寫下我對(duì)selenium的理解以及UIAutomation的一些理解,以此開(kāi)篇吧^_^
	  前段時(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