Selenium+Webdriver+Python自動化測試環(huán)境課件_第1頁
Selenium+Webdriver+Python自動化測試環(huán)境課件_第2頁
Selenium+Webdriver+Python自動化測試環(huán)境課件_第3頁
Selenium+Webdriver+Python自動化測試環(huán)境課件_第4頁
Selenium+Webdriver+Python自動化測試環(huán)境課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

開源免費,不用為破解而大傷腦筋*

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

的程序。*

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

java、ruby、python、或是C#

,你都可以通過selenium完成自動化測試,而QTP只支持VBS

*

支持多平臺:Windows、Linux、MAC

*

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

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

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

沒有報錯表示安裝成功。第三步:下載并安裝Python的包管理工具pip,pip—有點類似SetupTools

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

setup.py

install

沒有報錯表示安裝成功。切換到X:\Python27\Scripts

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

>

easy_install

pip沒有報錯表示安裝成功。二.自動化測試環(huán)境的搭建第一步:下載并安裝Python(推薦使用2.7.x版本)二.7第四步:下載并安裝基于Python的Selenium包下載selenium

x.xx.x

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

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

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

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

腳本錄制步驟:

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

)三.selenium-ide腳本錄制和腳本寫作Selenium的IDE(集成開發(fā)環(huán)境)是一個易于使用的Fi10三.selenium-ide腳本錄制和腳本寫作三.selenium-ide腳本錄制和腳本寫作11三.selenium-ide腳本錄制和腳本寫作三.selenium-ide腳本錄制和腳本寫作12三.selenium-ide腳本錄制和腳本寫作IDE錄制腳本存在局限和問題:

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

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

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

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

2.定義一個繼承自unittest.TestCase的測試用例類

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

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

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

6.調(diào)用unittest.main()啟動測試

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

以添加-v參數(shù)顯示詳細信息。四.unittest的簡單介紹及使用一個完整的測試腳本包含:四.unittest的簡單介紹及使用17四.unittest的簡單介紹及使用介紹以下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繼承一個子類。2.定義測試方法,以test開頭。3.調(diào)用unittest.main(),這個方法會自動執(zhí)行所有以test開頭的測試方法。四.unittest的簡單介紹及使用介紹以下unittest18四.unittest的簡單介紹及使用第2種調(diào)用方法:自己創(chuàng)建一個TestSuite,添加需要執(zhí)行測試的TestCase,然后使用TestRunner().run(suite)執(zhí)行測試。if__name__=='__main__':suite=unittest.TestSuite()suite.addTest(TestSequenceFunctions('test_choice')suite.addTest(TestSequenceFunctions('test_sample')unittest.TextTestRunner().run(suite)四.unittest的簡單介紹及使用第2種調(diào)用方法:自己創(chuàng)建19四.unittest的簡單介紹及使用測試主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。常見的斷言方法有:四.unittest的簡單介紹及使用測試主要是調(diào)用asser20selenium對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)頁元素的定位selenium對web各元素的操作首先就要先定位元素,定位21五.網(wǎng)頁元素的定位下面是百度輸入框的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其實就是tag_name(標(biāo)簽名),同樣也可以表示成:find_element_by_tag_name("input")注意:通過tag_name查找時使用find_element_by_tag_name查找到的是第一個標(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”);五.網(wǎng)頁元素的定位22五.網(wǎng)頁元素的定位有時候不是一個輸入框也不是一個按鈕,而是一個文字鏈接,我們可以通過link定位<ahref=””>baidu</a>>7.通過link定位:baidu=driver.find_element_by_link_text(“baidu”));5、通過css定位元素:用css定位是比較靈活的,想要完全弄懂,花費的時間是比較多的,個人覺得沒有必要,盡量不使用6、通過xpath定位元素:XPath是一種在XML文檔中定位元素的語言。因為HTML可以看做XML的一種實現(xiàn),所以selenium用戶可是使用這種強大語言在web應(yīng)用中定位元素。XPATH的值可以通過firebug或者谷歌的審查元素中:右鍵功能:復(fù)制XPATH即可獲得。例子:driver.find_element_by_xpath("http://tr[7]/td[2]")五.網(wǎng)頁元素的定位有時候不是一個輸入框也不是一個按鈕,而是一23六.瀏覽器的基本操作選擇瀏覽器:driver

=

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

#選擇窗口對象截取當(dāng)前頁面:driver.get_screenshot_as_file('/Screenshots/foo.png')關(guān)閉瀏覽器:driver.quit()/driver.close()……常用操作:六.瀏覽器的基本操作選擇瀏覽器:driver

=

webd24六.瀏覽器的基本操作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)懸停在一個元素上——如:above=driver.find_element_by_xpath("xpath路徑")

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

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

ActionChains(driver).click_and_hold(left).perform()六.瀏覽器的基本操作ActionChains類鼠標(biāo)操作的常用25六.瀏覽器的基本操作鍵盤事件:引入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)

回車代替點擊——如: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)

六.瀏覽器的基本操作鍵盤事件:26七.拓展-測試報告的生成#導(dǎo)入測試報告生成的模塊importHTMLTestRunnersuite=unittest.TestSuite()#

定義生成測試報告的名稱

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

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

runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u'自動化測試報告',description=u'自動化測試報告')#執(zhí)行測試腳本,并生成測試報告

runner.run(suite)報告的內(nèi)容:七.拓展-測試報告的生成#導(dǎo)入測試報告生成的模塊27七.拓展-數(shù)據(jù)驅(qū)動(文本、表格等)文本:

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

data_file的內(nèi)容:姓名性別年齡張三男20李四男24

……

defdatatouch(i):

source=open("./data_file.txt","r")

values=source.readlines()

word=values[i].split()

returnwordData_1=datatouch(1)Test_value1=str(Data_1[0])數(shù)據(jù)驅(qū)動:從某個數(shù)據(jù)文件(例如文本、Excel文件、CSV文件、數(shù)據(jù)庫等)中讀取輸入、輸出的測試數(shù)據(jù),然后通過變量傳入事先錄制好的或手工編寫的測試腳本中。七.拓展-數(shù)據(jù)驅(qū)動(文本、表格等)文本:例子:作用是獲28七.拓展-數(shù)據(jù)驅(qū)動(文本、表格等)常用操作:導(dǎo)入模塊importxlrd打開Excel文件讀取數(shù)據(jù)data=xlrd.open_workbook('excelFile.xls')獲取一個工作表table=data.sheets()[0]

#通過索引順序獲取table=data.sheet_by_index(0)#通過索引順序獲取table=data.sheet_by_name(u'Sheet1')#通過名稱獲取整行和整列的值(數(shù)組)table.row_values(i)table.col_values(i)獲取行數(shù)和列數(shù)nrows=table.nrowsncols=table.ncols獲取單元格cell_A1=table.cell(0,0).valuecell_C4=table.cell(2,3).value七.拓展-數(shù)據(jù)驅(qū)動(文本、表格等)常用操作:29七.拓展-數(shù)據(jù)驅(qū)動(文本、表格等)例子:importxlrddata=xlrd.open_workbook('companylist.xlsx')table=data.sheets()[0]table_value1=str(table.cell(1,0).value)七.拓展-數(shù)據(jù)驅(qū)動(文本、表格等)例子:30實例:實例:31Selenium+Webdriver+Python自動化測試環(huán)境課件32結(jié)果:結(jié)果:33相關(guān)資料:1、Python的基礎(chǔ)教程:

/python/python-tutorial.html或《Python基礎(chǔ)教程第2版》.pdf2、Selenium2.0WebDriver入門指南:/willSoft/blog/281193、seleniumwebdriver(python)第三版.pdf

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

開源免費,不用為破解而大傷腦筋*

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

的程序。*

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

java、ruby、python、或是C#

,你都可以通過selenium完成自動化測試,而QTP只支持VBS

*

支持多平臺:Windows、Linux、MAC

*

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

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

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

沒有報錯表示安裝成功。第三步:下載并安裝Python的包管理工具pip,pip—有點類似SetupTools

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

setup.py

install

沒有報錯表示安裝成功。切換到X:\Python27\Scripts

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

>

easy_install

pip沒有報錯表示安裝成功。二.自動化測試環(huán)境的搭建第一步:下載并安裝Python(推薦使用2.7.x版本)二.41第四步:下載并安裝基于Python的Selenium包下載selenium

x.xx.x

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

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

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

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

腳本錄制步驟:

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

)三.selenium-ide腳本錄制和腳本寫作Selenium的IDE(集成開發(fā)環(huán)境)是一個易于使用的Fi44三.selenium-ide腳本錄制和腳本寫作三.selenium-ide腳本錄制和腳本寫作45三.selenium-ide腳本錄制和腳本寫作三.selenium-ide腳本錄制和腳本寫作46三.selenium-ide腳本錄制和腳本寫作IDE錄制腳本存在局限和問題:

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

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

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

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

2.定義一個繼承自unittest.TestCase的測試用例類

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

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

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

6.調(diào)用unittest.main()啟動測試

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

以添加-v參數(shù)顯示詳細信息。四.unittest的簡單介紹及使用一個完整的測試腳本包含:四.unittest的簡單介紹及使用51四.unittest的簡單介紹及使用介紹以下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繼承一個子類。2.定義測試方法,以test開頭。3.調(diào)用unittest.main(),這個方法會自動執(zhí)行所有以test開頭的測試方法。四.unittest的簡單介紹及使用介紹以下unittest52四.unittest的簡單介紹及使用第2種調(diào)用方法:自己創(chuàng)建一個TestSuite,添加需要執(zhí)行測試的TestCase,然后使用TestRunner().run(suite)執(zhí)行測試。if__name__=='__main__':suite=unittest.TestSuite()suite.addTest(TestSequenceFunctions('test_choice')suite.addTest(TestSequenceFunctions('test_sample')unittest.TextTestRunner().run(suite)四.unittest的簡單介紹及使用第2種調(diào)用方法:自己創(chuàng)建53四.unittest的簡單介紹及使用測試主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。常見的斷言方法有:四.unittest的簡單介紹及使用測試主要是調(diào)用asser54selenium對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)頁元素的定位selenium對web各元素的操作首先就要先定位元素,定位55五.網(wǎng)頁元素的定位下面是百度輸入框的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其實就是tag_name(標(biāo)簽名),同樣也可以表示成:find_element_by_tag_name("input")注意:通過tag_name查找時使用find_element_by_tag_name查找到的是第一個標(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”);五.網(wǎng)頁元素的定位56五.網(wǎng)頁元素的定位有時候不是一個輸入框也不是一個按鈕,而是一個文字鏈接,我們可以通過link定位<ahref=””>baidu</a>>7.通過link定位:baidu=driver.find_element_by_link_text(“baidu”));5、通過css定位元素:用css定位是比較靈活的,想要完全弄懂,花費的時間是比較多的,個人覺得沒有必要,盡量不使用6、通過xpath定位元素:XPath是一種在XML文檔中定位元素的語言。因為HTML可以看做XML的一種實現(xiàn),所以selenium用戶可是使用這種強大語言在web應(yīng)用中定位元素。XPATH的值可以通過firebug或者谷歌的審查元素中:右鍵功能:復(fù)制XPATH即可獲得。例子:driver.find_element_by_xpath("http://tr[7]/td[2]")五.網(wǎng)頁元素的定位有時候不是一個輸入框也不是一個按鈕,而是一57六.瀏覽器的基本操作選擇瀏覽器:driver

=

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

#選擇窗口對象截取當(dāng)前頁面:driver.get_screenshot_as_file('/Screenshots/foo.png')關(guān)閉瀏覽器:driver.quit()/driver.close()……常用操作:六.瀏覽器的基本操作選擇瀏覽器:driver

=

webd58六.瀏覽器的基本操作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)懸停在一個元素上——如:above=driver.find_element_by_xpath("xpath路徑")

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

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

ActionChains(driver).click_and_hold(left).perform()六.瀏覽器的基本操作ActionChains類鼠標(biāo)操作的常用59六.瀏覽器的基本操作鍵盤事件:引入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.CON

溫馨提示

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

最新文檔

評論

0/150

提交評論