Selenium+Webdriver+Python自動(dòng)化測(cè)試環(huán)境_第1頁(yè)
Selenium+Webdriver+Python自動(dòng)化測(cè)試環(huán)境_第2頁(yè)
Selenium+Webdriver+Python自動(dòng)化測(cè)試環(huán)境_第3頁(yè)
Selenium+Webdriver+Python自動(dòng)化測(cè)試環(huán)境_第4頁(yè)
Selenium+Webdriver+Python自動(dòng)化測(cè)試環(huán)境_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Selenium+Webdriver+Python自動(dòng)化測(cè)試環(huán)境第一頁(yè),共36頁(yè)。一.Selenium+Webdriver+Python基本框架的介紹二.自動(dòng)化測(cè)試環(huán)境的搭建三.selenium-ide腳本錄制和腳本寫作四.unittest的簡(jiǎn)單介紹及使用五.網(wǎng)頁(yè)元素的定位六.瀏覽器的基本操作七.拓展:(1)測(cè)試報(bào)告的生成(2)數(shù)據(jù)驅(qū)動(dòng)(文本、表格等)第二頁(yè),共36頁(yè)。一.Selenium+Webdriver+Python基本框架介紹Selenium是一個(gè)開源的和便攜式的自動(dòng)化軟件測(cè)試工具,用于測(cè)試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運(yùn)行,相比QTP有以下優(yōu)點(diǎn):*

開源免費(fèi),不用為破解而大傷腦筋*

小巧,對(duì)于不同的語言它只是一個(gè)包而已,而QTP需要下載安裝1個(gè)多G

的程序。*

支持多種腳本語言,這是最重要的一點(diǎn),不管你以前更熟悉C、

java、ruby、python、或是C#

,你都可以通過selenium完成自動(dòng)化測(cè)試,而QTP只支持VBS

*

支持多平臺(tái):Windows、Linux、MAC

*

支持多瀏覽器:IE、Firefox、Chrome、Safari、Opera等第三頁(yè),共36頁(yè)。一.Selenium+Webdriver+Python基本框架介紹第四頁(yè),共36頁(yè)。一.Selenium+Webdriver+Python基本框架介紹Selenium:1、Selenium腳本錄制和回放2、Selenium自動(dòng)化腳本(.py)編寫3、Selenium測(cè)試套(Testsuite)初始化,預(yù)置條件用例執(zhí)行部分清理,還原初始環(huán)境4、截圖以及結(jié)果報(bào)告的生成第五頁(yè),共36頁(yè)。一.Selenium+Webdriver+Python框架的介紹

軟件列表Python(2.7.x)(腳本語言,驅(qū)動(dòng)Selenium)SetupTools、pip工具(安裝包管理工具)Python的Selenium包(實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)化測(cè)試)瀏覽器(firfox,ie、chrome等)網(wǎng)頁(yè)驅(qū)動(dòng)IE:IEDriver

Chrome:ChromedriverSeleniumIDE插件firebug插件(獲取網(wǎng)頁(yè)元素的Xpath、Css等)其他:HTMLTesterRunner.py(生成測(cè)試報(bào)告)、xlrd(對(duì)xls表格進(jìn)行讀操作)等腳本開發(fā)腳本執(zhí)行輔助腳本錄制第六頁(yè),共36頁(yè)。第一步:下載并安裝Python(推薦使用2.7.x版本)exe文件運(yùn)行安裝即可,安裝后環(huán)境變量中添加python的安裝目錄。第二步:下載并安裝Python的SetupTools:SetupTools就是一個(gè)幫助你安裝第三方工具包的增強(qiáng)工具軟件。下載文件后,對(duì)setuptools-x.x.tar.gz文件進(jìn)行解壓,進(jìn)入windows命令提示下執(zhí)行setup.py,X:\setuptools-x.x>pythonsetup.pyinstall

沒有報(bào)錯(cuò)表示安裝成功。第三步:下載并安裝Python的包管理工具pip,pip—有點(diǎn)類似SetupTools

,但是比它強(qiáng)大。下載文件后,pip-x.x.tar.gz文件進(jìn)行解壓,進(jìn)入windows命令提示下執(zhí)行setup.py,如:X:\pipx.x>python

setup.py

install

沒有報(bào)錯(cuò)表示安裝成功。切換到X:\Python27\Scripts

目錄下輸入:X:\Python27\Scripts

>

easy_install

pip沒有報(bào)錯(cuò)表示安裝成功。二.自動(dòng)化測(cè)試環(huán)境的搭建第七頁(yè),共36頁(yè)。第四步:下載并安裝基于Python的Selenium包下載selenium

x.xx.x

,并解壓把整個(gè)目錄放到X:\Python27\Lib\site-packages目錄下,進(jìn)入windows命令提示下執(zhí)行setup.py,如:X:\Python27\Lib\site-packages\selenium-x.xx.x>pythonsetup.pyinstall沒有報(bào)錯(cuò)表示安裝成功。第五步:驗(yàn)證Selenium安裝是否成功.....其他:

Firefox瀏覽器,網(wǎng)頁(yè)驅(qū)動(dòng)(IE:IEDriver

Chrome:Chromedriver),selenium-ide插件(腳本錄制),HTMLTesterRunner.py(生成測(cè)試報(bào)告),xlrd(對(duì)xls表格進(jìn)行讀操作)等HTMLTesterRunner.py(生成測(cè)試報(bào)告),xlrd(對(duì)xls表格進(jìn)行讀操作)將其放到Python的LIB庫(kù)中,ImportHTMLTesterRunner、Importxlrd就可實(shí)現(xiàn)相應(yīng)的功能。二.自動(dòng)化測(cè)試環(huán)境的搭建第八頁(yè),共36頁(yè)。二.自動(dòng)化測(cè)試環(huán)境的搭建#驗(yàn)證Selenium安裝是否成功#功能:打開巨潮網(wǎng)主頁(yè),在搜索欄輸入000001進(jìn)行搜索#coding=utf-8fromseleniumimportwebdriver#Keys提供鍵盤操作frommon.keysimportKeysimporttime#打開Firefox瀏覽器driver=webdriver.Firefox()#打開巨潮網(wǎng)主頁(yè)driver.get("")#在搜索欄輸入000001driver.find_element_by_id("common_top_input_obj").send_keys("000001")#回車進(jìn)行搜索driver.find_element_by_id("common_top_input_obj").send_keys(Keys.ENTER)#延遲2秒time.sleep(2)#關(guān)閉瀏覽器driver.quit()

第九頁(yè),共36頁(yè)。Selenium的IDE(集成開發(fā)環(huán)境)是一個(gè)易于使用的Firefox插件,用于開發(fā)Selenium測(cè)試案例。它提供了一個(gè)圖形用戶界面,用于記錄使用Firefox瀏覽器,用來學(xué)習(xí)和使用Selenium用戶操作,但它只能用于Firefox瀏覽器不支持其它瀏覽器。然而,所記錄的腳本可以被轉(zhuǎn)換成由Selenium支持多種編程語言和腳本可以在各種其它的瀏覽器,以及被執(zhí)行。

腳本錄制步驟:

第一步:打開火狐瀏覽器,在地址欄上輸入被測(cè)網(wǎng)頁(yè)的URL.第二步:菜單欄:工具-selenium-ide打開后,在的selenium-ide地址欄輸入相同的URL.第三步:點(diǎn)擊開始錄制第四步:在瀏覽器中進(jìn)行相應(yīng)的操作第五步:點(diǎn)擊結(jié)束錄制,查看并回放SeleniumIDE錄制的結(jié)果第六步:腳本導(dǎo)出(選擇導(dǎo)出需要的語言腳本:Python2/Unittest/webdiver

)三.selenium-ide腳本錄制和腳本寫作第十頁(yè),共36頁(yè)。三.selenium-ide腳本錄制和腳本寫作第十一頁(yè),共36頁(yè)。三.selenium-ide腳本錄制和腳本寫作第十二頁(yè),共36頁(yè)。三.selenium-ide腳本錄制和腳本寫作IDE錄制腳本存在局限和問題:

1、腳本不穩(wěn)定,回放經(jīng)常出錯(cuò)。(部分操作捕獲不到)

2、閱讀性差,不知道自動(dòng)化測(cè)試執(zhí)行了具體哪些操作,和實(shí)現(xiàn)什么功能。(注釋)

3、如果web頁(yè)面中的個(gè)別元素發(fā)生了變化,所有涉及該元素的腳本需要修改。

4、元素的id或部分文字是動(dòng)態(tài)的,即每次執(zhí)行的腳本都是不同的。(參數(shù)化)5.缺少對(duì)實(shí)際結(jié)果進(jìn)行判斷的語句。(斷言)……等等第十三頁(yè),共36頁(yè)。打開IDLE(pythonGUI)>OPEN:加載錄制導(dǎo)出的腳本,進(jìn)行腳本編寫。三.selenium-ide腳本錄制和腳本寫作第十四頁(yè),共36頁(yè)。四.unittest的簡(jiǎn)單介紹及使用TestCase:一個(gè)測(cè)試用例,或是一個(gè)完整的測(cè)試流程,包括測(cè)試前準(zhǔn)備環(huán)境的搭建(setUp),執(zhí)行測(cè)試代碼(run)以及測(cè)試后環(huán)境的還原(tearDown)。元測(cè)試(unittest)的本質(zhì)也就在這里,一個(gè)測(cè)試用例是一個(gè)完整的測(cè)試單元,通過運(yùn)行這個(gè)測(cè)試單元,可以對(duì)某一個(gè)問題進(jìn)行驗(yàn)證。TestSuite:而多個(gè)測(cè)試用例TestCase集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。TestLoader:用來加載TestCase到TestSuite中的,其中有幾個(gè)loadTestsFrom__()方法,就是從各個(gè)地方尋找TestCase,創(chuàng)建它們的實(shí)例,然后add到TestSuite中,再返回一個(gè)TestSuite實(shí)例。TextTestRunner:是來執(zhí)行測(cè)試用例的,其中的run(test)會(huì)執(zhí)行TestSuite/TestCase中的run(result)方法。測(cè)試的結(jié)果會(huì)保存到TextTestResult實(shí)例中,包括運(yùn)行了多少測(cè)試用例,成功了多少,失敗了多少等信息。第十五頁(yè),共36頁(yè)。整個(gè)流程:首先是要寫好TestCase,然后由TestLoader加載TestCase到TestSuite,然后由TextTestRunner來運(yùn)行TestSuite,運(yùn)行的結(jié)果保存在TextTestResult中,整個(gè)過程集成在unittest.main模塊中。四.unittest的簡(jiǎn)單介紹及使用TestFixture:對(duì)一個(gè)測(cè)試用例環(huán)境的搭建和銷毀,通過覆蓋TestCase的setUp()和tearDown()方法來實(shí)現(xiàn)。這個(gè)有什么用呢?比如說在這個(gè)測(cè)試用例中需要訪問數(shù)據(jù)庫(kù),那么可以在setUp()中建立數(shù)據(jù)庫(kù)連接以及進(jìn)行一些初始化,在tearDown()中清除在數(shù)據(jù)庫(kù)中產(chǎn)生的數(shù)據(jù),然后關(guān)閉連接。注意tearDown的過程很重要,要為以后的TestCase留下一個(gè)干凈的環(huán)境。第十六頁(yè),共36頁(yè)。一個(gè)完整的測(cè)試腳本包含:1.importunittest

2.定義一個(gè)繼承自u(píng)nittest.TestCase的測(cè)試用例類

3.定義setUp和tearDown,在每個(gè)測(cè)試用例前后做一些輔助工作。

4.定義測(cè)試用例,名字以test開頭。

5.一個(gè)測(cè)試用例應(yīng)該只測(cè)試一個(gè)方面,測(cè)試目的和測(cè)試內(nèi)容應(yīng)很明確。主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。

6.調(diào)用unittest.main()啟動(dòng)測(cè)試

7.如果測(cè)試未通過,會(huì)輸出相應(yīng)的錯(cuò)誤提示。如果測(cè)試全部通過則不顯示任何東西,也可

以添加-v參數(shù)顯示詳細(xì)信息。四.unittest的簡(jiǎn)單介紹及使用第十七頁(yè),共36頁(yè)。四.unittest的簡(jiǎn)單介紹及使用介紹以下unittest的基本用法。第1種用法(以下代碼是官方文檔的sample)。importunittestclassTestSequenceFunctions(unittest.TestCase):defsetUp(self):self.seq=range(10)deftest_choice(self):element=random.choice(self.seq)self.assertTrue(elementinself.seq)deftest_sample(self):withself.assertRaises(ValueError):random.sample(self.seq,20)forelementinrandom.sample(self.seq,5):self.assertTrue(elementinself.seq)defsetDown(self):passif__name__=='__main__':unittest.main()1.從unittest.TestCase繼承一個(gè)子類。2.定義測(cè)試方法,以test開頭。3.調(diào)用unittest.main(),這個(gè)方法會(huì)自動(dòng)執(zhí)行所有以test開頭的測(cè)試方法。第十八頁(yè),共36頁(yè)。四.unittest的簡(jiǎn)單介紹及使用第2種調(diào)用方法:自己創(chuàng)建一個(gè)TestSuite,添加需要執(zhí)行測(cè)試的TestCase,然后使用TestRunner().run(suite)執(zhí)行測(cè)試。if__name__=='__main__':suite=unittest.TestSuite()suite.addTest(TestSequenceFunctions('test_choice')suite.addTest(TestSequenceFunctions('test_sample')unittest.TextTestRunner().run(suite)第十九頁(yè),共36頁(yè)。四.unittest的簡(jiǎn)單介紹及使用測(cè)試主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。常見的斷言方法有:第二十頁(yè),共36頁(yè)。selenium對(duì)web各元素的操作首先就要先定位元素,定位元素的方法主要有以下幾種:1、通過id定位元素:find_element_by_id("id_vaule")2、通過name定位元素:find_element_by_name("name_vaule")3、通過tag_name定位元素:find_element_by_tag_name("tag_name_vaule")4、通過class_name定位元素:find_element_by_class_name("class_name")5、通過css定位元素:find_element_by_css_selector();6、通過xpath定位元素:find_element_by_xpath("xpath")7、通過link定位:find_element_by_link_text("text_vaule")或者find_element_by_partial_link_text()五.網(wǎng)頁(yè)元素的定位第二十一頁(yè),共36頁(yè)。五.網(wǎng)頁(yè)元素的定位下面是百度輸入框的html代碼,可以通過firebug或者谷歌的審查元素得:<inputtype=“text“name=”wd”id=“kw1”maxlength=“100“style=”width:474px;”

autocomplete=“off”>

1.通過id定位:則百度的輸入框即可表示為:find_element_by_id(“kw1”)

2.通過name定位:則可以表示為:find_element_by_name(“wd”)

3.通過tag_name定位:input其實(shí)就是tag_name(標(biāo)簽名),同樣也可以表示成:find_element_by_tag_name("input")注意:通過tag_name查找時(shí)使用find_element_by_tag_name查找到的是第一個(gè)標(biāo)簽的tag_name<divclass=”top”><span>Head</span></div><divclass=”top”><span>HeadName</span></div>4.通過class_name定位元素:top=find_element_by_className(“top”);第二十二頁(yè),共36頁(yè)。五.網(wǎng)頁(yè)元素的定位有時(shí)候不是一個(gè)輸入框也不是一個(gè)按鈕,而是一個(gè)文字鏈接,我們可以通過link定位<ahref=””>baidu</a>>7.通過link定位:baidu=driver.find_element_by_link_text(“baidu”));5、通過css定位元素:用css定位是比較靈活的,想要完全弄懂,花費(fèi)的時(shí)間是比較多的,個(gè)人覺得沒有必要,盡量不使用6、通過xpath定位元素:XPath是一種在XML文檔中定位元素的語言。因?yàn)镠TML可以看做XML的一種實(shí)現(xiàn),所以selenium用戶可是使用這種強(qiáng)大語言在web應(yīng)用中定位元素。XPATH的值可以通過firebug或者谷歌的審查元素中:右鍵功能:復(fù)制XPATH即可獲得。例子:driver.find_element_by_xpath("http://tr[7]/td[2]")第二十三頁(yè),共36頁(yè)。六.瀏覽器的基本操作選擇瀏覽器:driver

=

webdriver.Firefox()打開url:driver.get("")前進(jìn)/后退:driver.forward()/driver.back()刷新:driver.refresh()最大化:browser.maximize_window()返回當(dāng)前頁(yè)面標(biāo)題:driver.title返回當(dāng)前頁(yè)面url:driver.current_url返回當(dāng)前瀏覽器的所有窗口:driver.window_handles返回當(dāng)前瀏覽器的窗口句柄:driver.current_window_handle選擇窗口:driver.switch_to_window(“window_name”)對(duì)話框操作:driver.switch_to_alert()

#選擇窗口對(duì)象截取當(dāng)前頁(yè)面:driver.get_screenshot_as_file('/Screenshots/foo.png')關(guān)閉瀏覽器:driver.quit()/driver.close()……常用操作:第二十四頁(yè),共36頁(yè)。六.瀏覽器的基本操作ActionChains類鼠標(biāo)操作的常用方法:引入ActionChains類:frommon.action_chainsimportActionChainscontext_click()

右擊——如:RightClick=driver.find_element_by_id("id")

ActionChains(driver).context_click(RightClick).perform()double_click()

雙擊——如:DoubleClick=driver.find_element_by_name("name")

ActionChains(driver).double_click(DoubleClick).perform()drag_and_drop(source,target)

鼠標(biāo)拖放——source:鼠標(biāo)按下的源元素;target:鼠標(biāo)釋放的目標(biāo)元素——如:element=driver.find_element_by_name("name")

target=driver.find_element_by_name("name")

ActionChains(driver).drag_and_drop(element,target).perform()move_to_element()

鼠標(biāo)懸停在一個(gè)元素上——如:above=driver.find_element_by_xpath("xpath路徑")

ActionChains(driver).move_to_element(above).perform()click_and_hold()

按下鼠標(biāo)左鍵在一個(gè)元素上——如:left=driver.find_element_by_name("name")

ActionChains(driver).click_and_hold(left).perform()第二十五頁(yè),共36頁(yè)。六.瀏覽器的基本操作鍵盤事件:引入Keys類包:frommon.keysimportKeyssend_keys()

輸入框輸入內(nèi)容——如:driver.find_element_by_id("id").send_keys("XXX")send_keys(Keys.SPACE)

輸入空格——如:driver.find_element_by_id("id").send_keys(Keys.SPACE)send_keys(Keys.CONTROL,‘a(chǎn)‘)

ctrl+a全選輸入框的內(nèi)容——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘a(chǎn)‘)send_keys(Keys.CONTROL,‘x‘)

ctrl+x剪切輸入框的內(nèi)容——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘x‘)send_keys(Keys.CONTROL,‘c‘)

復(fù)制——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘c‘)

send_keys(Keys.CONTROL,‘v‘)

ctrl+v粘貼到輸入框——如:driver.find_element_by_id("id").send_keys(Keys.CONTROL,‘v‘)send_keys(Keys.ENTER)

回車代替點(diǎn)擊——如:driver.find_element_by_id("id").send_keys(Keys.ENTER)send_keys(Keys.TAB)

制表鍵(Tab)——如:driver.find_element_by_id("id").send_keys(Keys.TAB)send_keys(Keys.ESCAPE)

回退鍵(Esc)——如:driver.find_element_by_id("id").send_keys(Keys.ESCAPE)

第二十六頁(yè),共36頁(yè)。七.拓展-測(cè)試報(bào)告的生成#導(dǎo)入測(cè)試報(bào)告生成的模塊importHTMLTestRunnersuite=unittest.TestSuite()#

定義生成測(cè)試報(bào)告的名稱

".result\"+str(time.strftime('%Y%m%d%H%M%S'))+".html"

fp=,'wb')#定義測(cè)試報(bào)告的路徑,標(biāo)題,描述等內(nèi)容

runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'自動(dòng)化測(cè)試報(bào)告',description=u'自動(dòng)化測(cè)試報(bào)告')#執(zhí)行測(cè)試腳本,并生成測(cè)試報(bào)告

runner.run(suite)報(bào)告的內(nèi)容:第二十七頁(yè),共36頁(yè)。七.拓展-數(shù)據(jù)驅(qū)動(dòng)(文本、表格等)文本:

例子:作用是獲取data_file文本中內(nèi)容,存放在列表中,作為輸入。

data_fil

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論