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