原創(chuàng)|使用教程|編輯:鄭恭琳|2020-06-09 13:50:24.030|閱讀 408 次
概述:如果您正在尋找入門Selenium的提示和技巧,這里有一些我在學(xué)習(xí)中發(fā)現(xiàn)的寶貴資源,它們也可以為您提供幫助。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
如果您正在尋找入門Selenium的提示和技巧,這里有一些我在學(xué)習(xí)中發(fā)現(xiàn)的寶貴資源,它們也可以為您提供幫助。
由于Parasoft針對(duì)Selenium測(cè)試的新產(chǎn)品,我最近學(xué)習(xí)了如何使用Selenium。我已經(jīng)具有Web測(cè)試、編寫Java代碼和JUnit的經(jīng)驗(yàn),但是我以前從未使用過Selenium。以下是一些有用的資源,我發(fā)現(xiàn)這些資源有助于提高效率。
首先是要確保您了解Selenium IDE和Selenium WebDriver之間的區(qū)別。我以為Selenium IDE是一種基于Selenium WebDriver的GUI記錄/播放程序,是入門的好方法,但是我很快發(fā)現(xiàn)自己遇到了局限性,在定位器錯(cuò)誤/丟失的情況下,播放無法成功進(jìn)行,并意識(shí)到任何認(rèn)真的Selenium測(cè)試人員都在使用Selenium WebDriver編寫代碼。完了,我不得不開始編寫代碼。
Selenium WebDriver庫(kù)可用于幾種不同的語(yǔ)言,從而使Selenium可以被許多人訪問。由于我最喜歡用Java編寫代碼,因此我堅(jiān)持了這一點(diǎn)。(此外,盡管Java進(jìn)行Selenium測(cè)試不需要JUnit,但我不明白為什么有人不使用它,因?yàn)樗綆Я嗽S多專門用于用Java編寫測(cè)試用例的功能。)
最后,如果我要編寫JUnits,那么我想我也可以在IDE中編寫它們。有兩種IDE在行業(yè)中最常用于Java:Eclipse和IntelliJ。我的大部分職業(yè)都是使用Eclipse,因此我堅(jiān)持使用它。
做出這些決定之后,我就可以開始了。
在開始之前,請(qǐng)確保您具有一些必備的技能,以掌握測(cè)試自動(dòng)化的基礎(chǔ)知識(shí)。
網(wǎng)絡(luò)技能
熟悉HTML和CSS:您不應(yīng)該擔(dān)心網(wǎng)站的頁(yè)面源,并且應(yīng)該了解頁(yè)面源如何轉(zhuǎn)換為您在瀏覽器中看到的內(nèi)容。如果HTML對(duì)您來說完全陌生,那么我建議您進(jìn)行一些基礎(chǔ)教育。這是一個(gè)很棒的網(wǎng)站,對(duì)我的早期教育網(wǎng)絡(luò)有所幫助:
瀏覽器的開發(fā)人員工具和XPath:另一個(gè)基本技能是了解如何在頁(yè)面上定位元素。Selenium WebDriver支持多種執(zhí)行此操作的機(jī)制,您很快就會(huì)了解它們。您可能會(huì)希望使用瀏覽器的開發(fā)人員工具來輕松找到頁(yè)面上的元素,下面是一個(gè)很棒的教程,可幫助您快速使用Chrome:
編碼技巧
如果您希望過渡到測(cè)試自動(dòng)化工程職位,則需要發(fā)展一些編碼技能。在您驚慌失措之前,好消息是,在Selenium中編寫代碼以自動(dòng)執(zhí)行Web測(cè)試相對(duì)容易。實(shí)際上,我認(rèn)為Selenium是學(xué)習(xí)編碼的好方法。您將要編寫的代碼受到嚴(yán)格限制,因此您不太可能完全不知所措。尋找免費(fèi)的教程和課程可以幫助您開始使用所選擇的語(yǔ)言,這并不難。為了學(xué)習(xí)Selenium需要了解的內(nèi)容,我找到了一個(gè)很棒的教程,涵蓋了Java和Selenium,適合初學(xué)者使用:
如果您確實(shí)選擇Java,那么我還建議您學(xué)習(xí)JUnit,這是Java的流行測(cè)試框架。這是一篇很棒的教程,涵蓋了JUnit,最后一課涵蓋了將JUnit與Selenium測(cè)試結(jié)合使用:
除了toolsqa的教程之外,我發(fā)現(xiàn)自己經(jīng)常光顧的另一個(gè)資源是:
這兩個(gè)資源將涵蓋使用Eclipse,Java,JUnit 4,Selenium WebDriver和Maven設(shè)置環(huán)境所需的所有主題。
......行家?那是什么?我要發(fā)表的評(píng)論是,我發(fā)現(xiàn)大多數(shù)教程都將Maven作為高級(jí)話題排在了后面。Maven是一個(gè)構(gòu)建工具,可利用其所有必需的依賴項(xiàng)來簡(jiǎn)化對(duì)代碼的編譯、測(cè)試和部署。像JUnit一樣,Maven是另一個(gè)可選項(xiàng)目,但我現(xiàn)在想提出來,因?yàn)橐坏┲酪鍪裁矗鼤?huì)使您的項(xiàng)目設(shè)置更加容易。如果您從Maven開始,那么您以后就不必考慮將Java項(xiàng)目轉(zhuǎn)換為Maven項(xiàng)目,只需從一開始就從Maven開始!我最喜歡的教程來自:
我提到的兩個(gè)教程參考都很好地指導(dǎo)您完成創(chuàng)建第一個(gè)腳本的過程。toolsqa文章假設(shè)您缺乏編碼知識(shí),并且softwaretestinghelp鏈接涵蓋了更多領(lǐng)域,但是它們都很出色:
一旦第一個(gè)腳本啟動(dòng)并運(yùn)行,并且對(duì)JUnit有所了解,toolsqa的JUnit教程的最后一課將幫助您將初始腳本重構(gòu)為JUnit格式:
在熟悉了Selenium基礎(chǔ)知識(shí)并擁有一個(gè)可以在瀏覽器中播放一兩個(gè)場(chǎng)景的腳本之后,就應(yīng)該準(zhǔn)備好進(jìn)入下一個(gè)層次了。頁(yè)面對(duì)象模型是組織Selenium測(cè)試代碼以使其更易于維護(hù)并減少重復(fù)代碼的一種方式。到目前為止,我的測(cè)試已將所有測(cè)試代碼包含在測(cè)試方法中。因此,我經(jīng)歷了一個(gè)兩步過程,首先將現(xiàn)有測(cè)試重構(gòu)為Page Object Model,然后再次重構(gòu)以使用Page Factory模式對(duì)其進(jìn)行優(yōu)化。這是一個(gè)有啟發(fā)性的兩步過程,我只能想象如果我跳過這些最佳實(shí)踐并在測(cè)試之后瘋狂地創(chuàng)建測(cè)試,會(huì)后悔多少。如果您在中使用Smart Recorder,則可以自動(dòng)執(zhí)行此操作。這是我用來對(duì)該主題進(jìn)行自我教育的一些指南:
如果要獲得相同的結(jié)果似乎需要額外的工作和額外的代碼,那您是對(duì)的。而且,如果您只打算進(jìn)行1或2個(gè)測(cè)試,那么也許這有點(diǎn)過頭了,但是對(duì)于測(cè)試自動(dòng)化工程師而言,情況絕非如此。當(dāng)您構(gòu)建一個(gè)包含100或1000多個(gè)測(cè)試的強(qiáng)大的回歸測(cè)試套件時(shí),這種模式最終使世界變得有意義。從長(zhǎng)遠(yuǎn)來看,代碼重用將為您節(jié)省大量時(shí)間。
在嘗試使用Selenium腳本時(shí),您將開始理解為什么我在頁(yè)面上列出定位元素是一項(xiàng)必要技能。您將在瀏覽器的開發(fā)人員工具擴(kuò)展A LOT中找到自己,并開始嘗試XPath。盡管有許多方法可以使用Selenium在頁(yè)面上定位元素,但是XPath是最靈活,功能最強(qiáng)大的方法之一。如果您無法通過簡(jiǎn)單的策略(例如使用ID,名稱或鏈接)來唯一地標(biāo)識(shí)元素,那么您將使用XPath或CSS定位器。任何相當(dāng)復(fù)雜的Selenium測(cè)試都將在這里或那里需要一些XPath來定位頑固的頁(yè)面元素,而XPath帶來的效果越好,測(cè)試人員的效率就越高。
好的,Wilhelm,XPath很棒,除了這里的家庭作業(yè),還能給我?guī)砀嗪锰巻幔科鋵?shí),是!還有一個(gè)漂亮的Chrome擴(kuò)展程序(也可用于Firefox),稱為TruePath。這個(gè)插件做了不錯(cuò)的工作,提供了推薦的XPath列表供您選擇,您可以將它們復(fù)制/粘貼到Selenium定位器代碼中。它并不總是完美的,但是我發(fā)現(xiàn)它可以幫助我展示我立即喜歡的Relative XPath,或者展示與我喜歡的東西足夠接近的Relative XPath,然后我可以以此為起點(diǎn)進(jìn)行調(diào)整。
一旦定位元素成為第二天性,您很可能會(huì)遇到另一個(gè)常見問題。您正在測(cè)試的Web應(yīng)用程序具有瀏覽器正在對(duì)服務(wù)器進(jìn)行的AJAX(異步JavaScript和XML)調(diào)用,而您的Selenium腳本正在執(zhí)行這些操作,從而使瀏覽器沒有足夠的時(shí)間來完成對(duì)異步流量的處理。我正在測(cè)試的電子商務(wù)網(wǎng)站存在此問題,我的Selenium測(cè)試是如此之快地單擊“添加到購(gòu)物車”,然后單擊“查看購(gòu)物車”,以至當(dāng)它到達(dá)購(gòu)物車頁(yè)面時(shí),購(gòu)物車是空的!我需要告訴我的Selenium測(cè)試在單擊“查看購(gòu)物車”之前要等待適當(dāng)?shù)?時(shí)間,但是該怎么做呢?
本教程涵蓋了一些與等待條件相關(guān)的基本Selenium課程,但似乎沒有一個(gè)適合于此類異步和動(dòng)態(tài)的課程。我如何預(yù)測(cè)Web服務(wù)器需要多長(zhǎng)時(shí)間響應(yīng)?我是否高估了安全性并使測(cè)試速度慢于需要的速度?有沒有更好的辦法?原來有。如今,許多現(xiàn)代Web框架都在使用jQuery庫(kù)來支持對(duì)后端服務(wù)器的AJAX調(diào)用。 Selenium WebDriver允許我執(zhí)行JavaScript作為測(cè)試步驟,并且我可以執(zhí)行一些JavaScript以檢查jQuery的狀態(tài),以提示瀏覽器何時(shí)完成與網(wǎng)絡(luò)服務(wù)器的對(duì)話,并且可以繼續(xù)進(jìn)行。我發(fā)現(xiàn)它深深地藏在toolsqa網(wǎng)站中(有趣的是,它不屬于Selenium教程的一部分):
對(duì)于初學(xué)者來說,這些額外的信息非常有用,但是,如果您想要的是更重要的內(nèi)容,那么以下是關(guān)于同一主題的簡(jiǎn)潔文章:
我要與您討論的最后一個(gè)話題是困擾所有管理變更的Selenium測(cè)試人員的話題。Web測(cè)試自動(dòng)化的缺點(diǎn)之一是UI更改的頻率以及它如何影響自動(dòng)化測(cè)試的穩(wěn)定性。身為測(cè)試自動(dòng)化工程師,您很快就會(huì)習(xí)慣于故障排除過程,以排除為什么測(cè)試一直無法執(zhí)行的原因,以及是否滿足以下條件:
自動(dòng)化測(cè)試失敗會(huì)導(dǎo)致很多錯(cuò)誤警報(bào),這不是因?yàn)樗鼈儼l(fā)現(xiàn)了一個(gè)錯(cuò)誤,而是因?yàn)樗鼈?需要維護(hù)或環(huán)境存在問題。
一種有助于最大程度地減少這一普遍問題的策略之一,我已經(jīng)在“元素位置”中進(jìn)行了介紹。當(dāng)測(cè)試無法找到Element時(shí),通常是因?yàn)樗褂玫?定位策略在應(yīng)用程序的最新部署中不再有效。在這里,元素的定位方式很重要,因此,讓我們討論一個(gè)示例,該示例如何編寫可適應(yīng)變化的定位器:
如果考慮這樣的元素的絕對(duì)XPath:
/html/body/div[25]/div[2]/div/span/section[2]/div/h2/p
親愛的,對(duì)HTML的任何細(xì)微改動(dòng)都會(huì)破壞這一點(diǎn)。 如果您像這樣構(gòu)造一個(gè)相對(duì)XPath:
//p[@id='8232:0'][contains(.,'Guidance for Success')]
這樣,您的測(cè)試就更有可能獲得成功。注意單詞“更好的機(jī)會(huì)”。有時(shí),應(yīng)用程序會(huì)發(fā)生很大變化,以至于您根本不走運(yùn)。但是編寫更具彈性的測(cè)試將減少自己將來工作的機(jī)會(huì)。(或者您可以查看。)
等待中也存在相同的問題。由于等待條件的原因,很多因素都可能導(dǎo)致測(cè)試自動(dòng)化的不穩(wěn)定。在AJAX上使用諸如智能等待之類的策略使用jQuery將幫助您減少由于等待條件而需要解決測(cè)試問題的可能性。在進(jìn)行主題討論時(shí),以下是有關(guān)Selenium中等待的有用教程:
不過,就像元素位置一樣,有時(shí)您會(huì)變成S-O-L,并且不可避免地需要維護(hù)。
學(xué)習(xí)Selenium的經(jīng)驗(yàn)使我感謝您在成為測(cè)試自動(dòng)化工程師的過程中可能面臨的挑戰(zhàn)。如果您是新手并且感到被嚇到了,請(qǐng)記住,這比您想象的要容易,并且您將很快成為專家級(jí)的自動(dòng)化網(wǎng)絡(luò)測(cè)試人員。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn