selenium自動化面試題及答案
selenium自動化面試題及答案
自動化技術(shù)是一門綜合性技術(shù),它和控制論、信息論、系統(tǒng)工程、計算機(jī)技術(shù)、電子學(xué)、液壓氣壓技術(shù)、自動控制等都有著十分密切的關(guān)系,而其中又以“控制理論”和“計算機(jī)技術(shù)”對自動化技術(shù)的影響最大。下面就由學(xué)習(xí)啦小編為大家介紹一下selenium 自動化面試題及答案的文章,歡迎閱讀。
selenium 自動化面試題及答案篇1
1、selenium中如何判斷元素是否存在?
- isElementPresent
2、selenium中hidden或者是display = none的元素是否可以定位到?
- 不能
3、selenium中如何保證操作元素的成功率?也就是說如何保證我點擊的元素一定是可以點擊的?
- 添加元素智能等待時間 driver.implicitly_wait(30)
- try 方式進(jìn)行 id,name,clas,x path, css selector 不同方式進(jìn)行定位,如果第一種失敗可以自動嘗試第二種
-Selenium保證元素成功率是通過元素的定位,當(dāng)然它的定位方法很多,一定能有合適的。但是在自動化工程的實施過程中,高質(zhì)量的自動化測試不是只有測試人員保證的。需要開發(fā)人員規(guī)范開發(fā)習(xí)慣,如給頁面元素加上唯一的name,id等,這樣就能大大地提高元素定位的準(zhǔn)確性。當(dāng)然如果開發(fā)人員開發(fā)不規(guī)范,我們在定位元素的時候盡量使用相對地址定位,這樣能減少元素定位受頁面變化的影響。只要我們元素定位準(zhǔn)確,就能保證我的每一個操作符合我的預(yù)期
4、如何提高selenium腳本的執(zhí)行速度?
- Selenium腳本的執(zhí)行速度受多方面因素的影響,如網(wǎng)速,操作步驟的繁瑣程度,頁面加載的速度,以及我們在腳本中設(shè)置的等待時間,運行腳本的線程數(shù)等。所以不能單方面追求運行速度的,要確保穩(wěn)定性,能穩(wěn)定地實現(xiàn)回歸測試才是關(guān)鍵。
我們可以從以下幾個方面來提高速度:
一,減少操作步驟,如經(jīng)過三四步才能打開我們要測試的頁面的話,我們就可以直接通過網(wǎng)址來打開,減少不必要的操作。
二,中斷頁面加載,如果頁面加載的內(nèi)容過多,我們可以查看一下加載慢的原因,如果加載的內(nèi)容不影響我們測試,就設(shè)置超時時間,中斷頁面加載。
三,在設(shè)置等待時間的時候,可以sleep固定的時間,也可以檢測某個元素出現(xiàn)后中斷等待也可以提高速度。
四,配置testNG實現(xiàn)多線程。在編寫測試用例的時候,一定要實現(xiàn)松耦合,然后在服務(wù)器允許的情況下,盡量設(shè)置多線程運行,提高執(zhí)行速度。
5、用例在運行過程中經(jīng)常會出現(xiàn)不穩(wěn)定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩(wěn)定性?
- time.sleep( )
- driver.implicitly_wait(30)
- 多用 try 捕捉,處理異常
-此時我們要分析出不穩(wěn)定的原因,然后有針對性的去解決問題。主要有以下幾個方面 :
一,網(wǎng)速問題:有的時候網(wǎng)頁加載的比較慢,在程序執(zhí)行的時候要操作的元素沒有顯示出來。這種情況比較常見,運行一次網(wǎng)速好的時候通過了,再運行一次,頁面沒有打開,就不通過了。為了提高穩(wěn)定性,我們只能犧牲運行時間了,在經(jīng)常檢測失敗的元素前加上等待時間,等要操作的元素出現(xiàn)之后再執(zhí)行下面的操作。
二,Selelnium的原因:Selenium1.0和2.0還是有區(qū)別的,有些兒函數(shù)在2.0下運行確實有時而有效,時面無效。如果mouseover()函數(shù),就是這種情況, 我們需要避免使用這類的函數(shù)。
三,多線程的時候,測試用例間相互影響。雖然多線程的時候運行速度比較快,但是如果用例之間的耦合性沒有設(shè)計好,也會影響的,如果用例A先于用例B執(zhí)行的時候,就會影響到用例B;反之則沒有問題。這種情況,如果你的自動化測試工程打算多線程的時候,提前就要把測試用例測試的耦合度比較松,盡量沒有任何關(guān)系,因為多線程的執(zhí)行順序是不受控制的。
6、你的自動化用例的執(zhí)行策略是什么?
- 自動化測試用例的執(zhí)行策略是要看自動化測試的目的,通常有如下幾種策略:
一,自動化測試用例是用來監(jiān)控的,在此目的下,我們就把自動化測試用例設(shè)置成定時執(zhí)行的,如果每五分鐘或是一個小時執(zhí)行一次,在jenkins上創(chuàng)建一個定時任務(wù)即可。
二,必須回歸的用例。有些兒測試用例,如BVT測試用例,我們在公司產(chǎn)品任何變動上線之前都需要回歸執(zhí)行。那我們就把測試用例設(shè)置成觸發(fā)式執(zhí)行,在jenkins上將我們的自動化測試任務(wù)綁定到開發(fā)的build任務(wù)上。當(dāng)開發(fā)人員在仿真環(huán)境上部代碼的時候,我們的自動化測試用例就會被觸發(fā)執(zhí)行。
三,不需要經(jīng)常執(zhí)行的測試用例。像全量測試用例,我們沒有必要一直回歸執(zhí)行,必竟還是有時間消耗的,有些非主要業(yè)務(wù)線也不需要時時回歸。這類測試用例我們就采用人工執(zhí)行,在jenkins創(chuàng)建一個任務(wù),需要執(zhí)行的時候人工去構(gòu)建即可。
selenium 自動化面試題及答案篇2
1、什么是持續(xù)集成?
- 持續(xù)集成源于極限編程(XP),是一種軟件實踐,軟件開發(fā)過程中集成步驟是一個漫長并且無法預(yù)測的過程。集成過程中可能會爆發(fā)大量的問題,因此集成過程需要盡可能小而多,實際上持續(xù)集成講的是不斷的去做軟件的集成工作。持續(xù)集成,最簡單的形式是包括一個監(jiān)控版本控制(SVN等等)變化的工具。當(dāng)變化被發(fā)覺時,這個工具可以自動的編譯并測試你的應(yīng)用。
2、自動化測試的時候是不是需要連接數(shù)據(jù)庫做數(shù)據(jù)校驗?
- UI自動化不需要
- 接口測試會需要
3、id,name,class,xpath, css selector這些屬性,你最偏愛哪一種,為什么?
- css 、xpath 幾乎所有的元素都可以定位到
4、如何去定位頁面上動態(tài)加載的元素?
- 觸發(fā)動態(tài)加載元素的事件,直至動態(tài)元素出現(xiàn),進(jìn)行定位
5、如何去定位屬性動態(tài)變化的元素?
- xpath或者css通過同級、父級、子級進(jìn)行定位
6、點擊鏈接以后,selenium是否會自動等待該頁面加載完畢?
- 會的
7、webdriver client的原理是什么?
- [Webdriver實現(xiàn)原理](http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html)
通過研究selenium-webdriver的源碼,筆者發(fā)現(xiàn)其實webdriver的實現(xiàn)原理并不高深莫測無法揣度。在這里以webdriver ruby binding的firefox-webdriver實現(xiàn)為例,簡單介紹一下webdriver的工作原理。
當(dāng)測試腳本啟動firefox的時候,selenium-webdriver 會首先在新線程中啟動firefox瀏覽器。如果測試腳本指定了firefox的profile,那么就以該profile啟動,否則的話就新啟1個profile,并啟動firefox;
firefox一般是以-no-remote的方法啟動,啟動后selenium-webdriver會將firefox綁定到特定的端口,綁定完成后該firefox實例便作為webdriver的remote server存在;
客戶端(也就是測試腳本)創(chuàng)建1個session,在該session中通過http請求向remote server發(fā)送restful的請求,remote server解析請求,完成相應(yīng)操作并返回response;
客戶端接受response,并分析其返回值以決定是轉(zhuǎn)到第3步還是結(jié)束腳本;
這就是webdriver的工作流程,看起來很復(fù)雜實際上當(dāng)了解了webdriver的實現(xiàn)原理后,理解上述問題應(yīng)該比較簡單。
webdriver是按照server – client的經(jīng)典設(shè)計模式設(shè)計的。
server端就是remote server,可以是任意的瀏覽器。當(dāng)我們的腳本啟動瀏覽器后,該瀏覽器就是remote server,它的職責(zé)就是等待client發(fā)送請求并做出相應(yīng);
client端簡單說來就是我們的測試代碼,我們測試代碼中的一些行為,比如打開瀏覽器,轉(zhuǎn)跳到特定的url等操作是以http請求的方式發(fā)送給被 測試瀏覽器,也就是remote server;remote server接受請求,并執(zhí)行相應(yīng)操作,并在response中返回執(zhí)行狀態(tài)、返回值等信息;
selenium 自動化面試題及答案篇3
1、webdriver的協(xié)議是什么?
-The WebDriver Wire Protocol
2、啟動瀏覽器的時候用到的是哪個webdriver協(xié)議?
-http
3、什么是page object設(shè)計模式?
-http://www.cnblogs.com/tsbc/p/4080301.html
相似功能地方,代碼基本都是一樣的,界面元素?fù)Q個查找方式,把原來的使用 xpath方式,改為使用 id 查找,需要對每個用例腳本都要改,雖然幾個用例看不出什么工作量,但是重復(fù)findElement的代碼,已經(jīng)讓我們感到了代碼的笨重。如果某些定位發(fā)生了改變,我們就得貫穿整個測試代碼進(jìn)行調(diào)整元素定位,這樣就會導(dǎo)致我們的腳本在后期,難以維護(hù)。因此通過Page Object Model 我們可以創(chuàng)建更加健壯代碼,并減少或者消除重復(fù)的測試代碼,從而也能夠提高代碼的可讀性,減少編寫腳本的工作量。Page Object Model的實現(xiàn),就是通過分離測試對象和測試腳本的抽象來實現(xiàn)的。
4、什么是page factory設(shè)計模式?
- http://relevantcodes.com/pageobjects-and-pagefactory-design-patterns-in-selenium/
5、怎樣去選擇一個下拉框中的value=xx的option?
-二次定位
6、如何在定位元素后高亮元素(以調(diào)試為目的)?
-重置元素屬性,給定位的元素加背景、邊框
7、什么是斷言?
-斷言的英文是assertion,斷言檢查的英文是assertion checking。
-斷言是指定一個程序必須已經(jīng)存在的狀態(tài)的一個邏輯表達(dá)式,或者一組程序變量在程序執(zhí)行期間的某個點上必須滿足的條件。
8、如果你進(jìn)行自動化測試方案的選型,你會選擇哪種語言,java,js,python還是ruby?
-使用自己熟悉的語言
9、page object設(shè)置模式中,是否需要在page里定位的方法中加上斷言?
-不需要
10、page object設(shè)計模式中,如何實現(xiàn)頁面的跳轉(zhuǎn)?
-get、click (可能有坑)
11、自動化測試用例從哪里來?
-手工用例中抽取
-可以參考自動化用例的執(zhí)行策略
12、你覺得自動化測試最大的缺陷是什么?
-不穩(wěn)定
-可靠性
-不易維護(hù)
-成本與收益
猜你喜歡:
2.終極面試問題