




已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)境,一.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)(文本、表格等),一.Selenium+Webdriver+Python基本框架介紹,Selenium是一個(gè)開(kāi)源的和便攜式的自動(dòng)化軟件測(cè)試工具,用于測(cè)試Web應(yīng)用程序有能力在不同的瀏覽器和操作系統(tǒng)運(yùn)行,相比QTP有以下優(yōu)點(diǎn):*開(kāi)源免費(fèi),不用為破解而大傷腦筋*小巧,對(duì)于不同的語(yǔ)言它只是一個(gè)包而已,而QTP需要下載安裝1個(gè)多G的程序。*支持多種腳本語(yǔ)言,這是最重要的一點(diǎn),不管你以前更熟悉C、java、ruby、python、或是C#,你都可以通過(guò)selenium完成自動(dòng)化測(cè)試,而QTP只支持VBS*支持多平臺(tái):Windows、Linux、MAC*支持多瀏覽器:IE、Firefox、Chrome、Safari、Opera等,一.Selenium+Webdriver+Python基本框架介紹,一.Selenium+Webdriver+Python基本框架介紹,Selenium:1、Selenium腳本錄制和回放2、Selenium自動(dòng)化腳本(.py)編寫3、Selenium測(cè)試套(Testsuite)初始化,預(yù)置條件用例執(zhí)行部分清理,還原初始環(huán)境4、截圖以及結(jié)果報(bào)告的生成,一.Selenium+Webdriver+Python框架的介紹,腳本開(kāi)發(fā),腳本執(zhí)行,輔助,腳本錄制,第一步:下載并安裝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.xpythonsetup.pyinstall沒(méi)有報(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.xpythonsetup.pyinstall沒(méi)有報(bào)錯(cuò)表示安裝成功。切換到X:Python27Scripts目錄下輸入:X:Python27Scriptseasy_installpip沒(méi)有報(bào)錯(cuò)表示安裝成功。,二.自動(dòng)化測(cè)試環(huán)境的搭建,第四步:下載并安裝基于Python的Selenium包下載seleniumx.xx.x,并解壓把整個(gè)目錄放到X:Python27Libsite-packages目錄下,進(jìn)入windows命令提示下執(zhí)行setup.py,如:X:Python27Libsite-packagesselenium-x.xx.xpythonsetup.pyinstall沒(méi)有報(bào)錯(cuò)表示安裝成功。第五步:驗(yàn)證Selenium安裝是否成功.其他:Firefox瀏覽器,網(wǎng)頁(yè)驅(qū)動(dòng)(IE:IEDriverChrome: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)境的搭建,二.自動(dòng)化測(cè)試環(huán)境的搭建,#驗(yàn)證Selenium安裝是否成功#功能:打開(kāi)巨潮網(wǎng)主頁(yè),在搜索欄輸入000001進(jìn)行搜索#coding=utf-8fromseleniumimportwebdriver#Keys提供鍵盤操作mon.keysimportKeysimporttime#打開(kāi)Firefox瀏覽器driver=webdriver.Firefox()#打開(kāi)巨潮網(wǎng)主頁(yè)driver.get(,Selenium的IDE(集成開(kāi)發(fā)環(huán)境)是一個(gè)易于使用的Firefox插件,用于開(kāi)發(fā)Selenium測(cè)試案例。它提供了一個(gè)圖形用戶界面,用于記錄使用Firefox瀏覽器,用來(lái)學(xué)習(xí)和使用Selenium用戶操作,但它只能用于Firefox瀏覽器不支持其它瀏覽器。然而,所記錄的腳本可以被轉(zhuǎn)換成由Selenium支持多種編程語(yǔ)言和腳本可以在各種其它的瀏覽器,以及被執(zhí)行。腳本錄制步驟:第一步:打開(kāi)火狐瀏覽器,在地址欄上輸入被測(cè)網(wǎng)頁(yè)的URL.第二步:菜單欄:工具-selenium-ide打開(kāi)后,在的selenium-ide地址欄輸入相同的URL.第三步:點(diǎn)擊開(kāi)始錄制第四步:在瀏覽器中進(jìn)行相應(yīng)的操作第五步:點(diǎn)擊結(jié)束錄制,查看并回放SeleniumIDE錄制的結(jié)果第六步:腳本導(dǎo)出(選擇導(dǎo)出需要的語(yǔ)言腳本:Python2/Unittest/webdiver),三.selenium-ide腳本錄制和腳本寫作,三.selenium-ide腳本錄制和腳本寫作,三.selenium-ide腳本錄制和腳本寫作,三.selenium-ide腳本錄制和腳本寫作,IDE錄制腳本存在局限和問(wèn)題: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ǔ)句。(斷言)等等,打開(kāi)IDLE(pythonGUI)OPEN:加載錄制導(dǎo)出的腳本,進(jìn)行腳本編寫。,三.selenium-ide腳本錄制和腳本寫作,四.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è)試單元,通過(guò)運(yùn)行這個(gè)測(cè)試單元,可以對(duì)某一個(gè)問(wèn)題進(jìn)行驗(yàn)證。TestSuite:而多個(gè)測(cè)試用例TestCase集合在一起,就是TestSuite,而且TestSuite也可以嵌套TestSuite。,TestLoader:用來(lái)加載TestCase到TestSuite中的,其中有幾個(gè)loadTestsFrom_()方法,就是從各個(gè)地方尋找TestCase,創(chuàng)建它們的實(shí)例,然后add到TestSuite中,再返回一個(gè)TestSuite實(shí)例。TextTestRunner:是來(lái)執(zhí)行測(cè)試用例的,其中的run(test)會(huì)執(zhí)行TestSuite/TestCase中的run(result)方法。測(cè)試的結(jié)果會(huì)保存到TextTestResult實(shí)例中,包括運(yùn)行了多少測(cè)試用例,成功了多少,失敗了多少等信息。,整個(gè)流程:首先是要寫好TestCase,然后由TestLoader加載TestCase到TestSuite,然后由TextTestRunner來(lái)運(yùn)行TestSuite,運(yùn)行的結(jié)果保存在TextTestResult中,整個(gè)過(guò)程集成在unittest.main模塊中。,四.unittest的簡(jiǎn)單介紹及使用,TestFixture:對(duì)一個(gè)測(cè)試用例環(huán)境的搭建和銷毀,通過(guò)覆蓋TestCase的setUp()和tearDown()方法來(lái)實(shí)現(xiàn)。這個(gè)有什么用呢?比如說(shuō)在這個(gè)測(cè)試用例中需要訪問(wèn)數(shù)據(jù)庫(kù),那么可以在setUp()中建立數(shù)據(jù)庫(kù)連接以及進(jìn)行一些初始化,在tearDown()中清除在數(shù)據(jù)庫(kù)中產(chǎn)生的數(shù)據(jù),然后關(guān)閉連接。注意tearDown的過(guò)程很重要,要為以后的TestCase留下一個(gè)干凈的環(huán)境。,一個(gè)完整的測(cè)試腳本包含:1.importunittest2.定義一個(gè)繼承自u(píng)nittest.TestCase的測(cè)試用例類3.定義setUp和tearDown,在每個(gè)測(cè)試用例前后做一些輔助工作。4.定義測(cè)試用例,名字以test開(kāi)頭。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è)試未通過(guò),會(huì)輸出相應(yīng)的錯(cuò)誤提示。如果測(cè)試全部通過(guò)則不顯示任何東西,也可以添加-v參數(shù)顯示詳細(xì)信息。,四.unittest的簡(jiǎn)單介紹及使用,四.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開(kāi)頭。3.調(diào)用unittest.main(),這個(gè)方法會(huì)自動(dòng)執(zhí)行所有以test開(kāi)頭的測(cè)試方法。,四.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),四.unittest的簡(jiǎn)單介紹及使用,測(cè)試主要是調(diào)用assertEqual、assertRaises等斷言方法判斷程序執(zhí)行結(jié)果和預(yù)期值是否相符。常見(jiàn)的斷言方法有:,selenium對(duì)web各元素的操作首先就要先定位元素,定位元素的方法主要有以下幾種:1、通過(guò)id定位元素:find_element_by_id(id_vaule)2、通過(guò)name定位元素:find_element_by_name(name_vaule)3、通過(guò)tag_name定位元素:find_element_by_tag_name(tag_name_vaule)4、通過(guò)class_name定位元素:find_element_by_class_name(class_name)5、通過(guò)css定位元素:find_element_by_css_selector();6、通過(guò)xpath定位元素:find_element_by_xpath(xpath)7、通過(guò)link定位:find_element_by_link_text(text_vaule)或者find_element_by_partial_link_text(),五.網(wǎng)頁(yè)元素的定位,五.網(wǎng)頁(yè)元素的定位,下面是百度輸入框的html代碼,可以通過(guò)firebug或者谷歌的審查元素得:1.通過(guò)id定位:則百度的輸入框即可表示為:find_element_by_id(“kw1”)2.通過(guò)name定位:則可以表示為:find_element_by_name(“wd”)3.通過(guò)tag_name定位:input其實(shí)就是tag_name(標(biāo)簽名),同樣也可以表示成:find_element_by_tag_name(input)注意:通過(guò)tag_name查找時(shí)使用find_element_by_tag_name查找到的是第一個(gè)標(biāo)簽的tag_nameHeadHeadName4.通過(guò)class_name定位元素:top=find_element_by_className(“top”);,五.網(wǎng)頁(yè)元素的定位,有時(shí)候不是一個(gè)輸入框也不是一個(gè)按鈕,而是一個(gè)文字鏈接,我們可以通過(guò)link定位baidu7.通過(guò)link定位:baidu=driver.find_element_by_link_text(“baidu”);,5、通過(guò)css定位元素:用css定位是比較靈活的,想要完全弄懂,花費(fèi)的時(shí)間是比較多的,個(gè)人覺(jué)得沒(méi)有必要,盡量不使用6、通過(guò)xpath定位元素:XPath是一種在XML文檔中定位元素的語(yǔ)言。因?yàn)镠TML可以看做XML的一種實(shí)現(xiàn),所以selenium用戶可是使用這種強(qiáng)大語(yǔ)言在web應(yīng)用中定位元素。XPATH的值可以通過(guò)firebug或者谷歌的審查元素中:右鍵功能:復(fù)制XPATH即可獲得。例子:driver.find_element_by_xpath(/tr7/td2),六.瀏覽器的基本操作,選擇瀏覽器:driver=webdriver.Firefox()打開(kāi)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(),常用操作:,六.瀏覽器的基本操作,ActionChains類鼠標(biāo)操作的常用方法:引入ActionChains類:mon.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(),六.瀏覽器的基本操作,鍵盤事件:引入Keys類包:mon.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)ctrl+a全選輸入框的內(nèi)容如:driver.find_element_by_id(id).send_keys(Keys.CONTROL,a)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),七.拓展-測(cè)試報(bào)告的生成,#導(dǎo)入測(cè)試報(bào)告生成的模塊importHTMLTestRunnersuite=unittest.TestSuite()#定義生成測(cè)試報(bào)告的名稱filename1=r.result+str(time.strftime(%Y%m%d%H%M%S)+.htmlfp=file(filename1,wb)#定義測(cè)試報(bào)告的路徑,標(biāo)題,描述等內(nèi)容runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title=u自動(dòng)化測(cè)試報(bào)告,description=u自
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)科護(hù)理循環(huán)+泌尿系統(tǒng)鞏固試題
- 流動(dòng)人口協(xié)管員工作總結(jié)
- 內(nèi)丘縣“醫(yī)院感染管理基層行”活動(dòng)實(shí)施方案
- 2025年四川省愛(ài)眾能源工程有限公司對(duì)外招聘考試筆試試題(含答案)
- 2025年安全生產(chǎn)個(gè)人述職報(bào)告范本(三)
- 體育產(chǎn)業(yè)廠房轉(zhuǎn)租及賽事運(yùn)營(yíng)合同
- 美食廣場(chǎng)餐飲托管服務(wù)合同樣本
- 高速鐵路沿線廠房拆遷補(bǔ)償及搬遷合同
- 車間租賃及智能化生產(chǎn)系統(tǒng)建設(shè)協(xié)議
- 銀行承兌匯票財(cái)務(wù)擔(dān)保合同賬務(wù)處理規(guī)定
- 2024年平?jīng)鰶艽h縣級(jí)醫(yī)療衛(wèi)生單位選調(diào)考試真題
- 2025年中國(guó)心梗鑒定儀市場(chǎng)運(yùn)行態(tài)勢(shì)及行業(yè)發(fā)展前景預(yù)測(cè)報(bào)告
- 第二單元 主題活動(dòng)一《我是聰明的消費(fèi)者》(說(shuō)課稿)-2023-2024學(xué)年四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)內(nèi)蒙古版
- 醫(yī)院氧氣泄露應(yīng)急預(yù)案
- 2024年中國(guó)安全應(yīng)急產(chǎn)業(yè)發(fā)展研究報(bào)告
- 京東方測(cè)評(píng)試題及答案
- 園林工程分部(子分部)工程、分項(xiàng)工程劃分
- 2024年優(yōu)居房產(chǎn)加盟業(yè)務(wù)保密協(xié)議3篇
- 【MOOC】人像攝影-中國(guó)傳媒大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 中小學(xué)家長(zhǎng)會(huì)期中期末家長(zhǎng)會(huì)253
- 派出所應(yīng)對(duì)校園突發(fā)事件應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論