python+selenium自動化軟體測試(第13章):selenium面試題

來源:互聯網
上載者:User

標籤:團隊開發   代碼   .com   工作原理   nbsp   選擇   bin   它的   自己   

前言
最近看到群裡有小夥伴貼出一組面試題,最近又是跳槽黃金季節,小編忍不住抽出一點時間總結了下
 
一、selenium中如何判斷元素是否存在?
expected_conditions模組提供了16種判斷方法,以下方法是判斷元素存在DOM中:
presence_of_element_located
    """ An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible.
        判斷元素存在DOM中,存在並不代表可見(也就是說可以是隱藏的,存在並不代表可以被點擊)

    """
 
二、selenium中hidden或者是display = none的元素是否可以定位到?
定位是可以定位到的,但是不能操作,可以判斷元素is_displayed()
想點擊的話,可以用js去掉dispalay=none的屬性
 
三、selenium中如何保證操作元素的成功率?也就是說如何保證我點擊的元素一定是可以點擊的?
WebDriverWait()與expected_conditions判斷方法封裝,迴圈判斷頁面元素出現後再操作,這樣可以大大提高操作元素的成功率。

四、如何提高selenium指令碼的執行速度?
1.少用sleep,盡量不用implicitly_wait
2.多用顯式等待方法
3.弄個效能好的電腦
五、用例在運行過程中經常會出現不穩定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩定性?
跟第三問一樣,封裝顯示等待與判斷方法
 
六、你的自動化用例的執行策略是什嗎?
1.整合到jenkins一鍵執行,可以手動執行,也可以定時執行

七、什麼是持續整合?
1.持續整合是一種軟體開發實踐,即團隊開發成員經常整合它們的工作,通過每個成員每天至少整合一次,也就意味著每天可能會發生多次整合。
每次整合都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而儘早地發現整合錯誤。
八、自動化測試的時候是不是需要串連資料庫做資料校正?
1 UI自動化不需要
2 介面測試會需要
 
九、id,name,class,xpath, css selector這些屬性,你最偏愛哪一種,為什嗎?
1.css妥妥的,css文法簡潔,定位快(xpath文法長,定位慢,還不穩定)

十、如何去定位頁面上動態載入的元素?
1. WebDriverWait()方法迴圈去查詢是否元素載入出來了
 
十一、如何去定位屬性動態變化的元素?
1.先去找該元素不變的屬性,要是都變,那就找不變的父元素,用層級定位(以不變應萬變)
 
十二、點選連結以後,selenium是否會自動等待該頁面載入完畢?
1.這個不會等的,沒載入完也可以下一步操作
 
 
十三、webdriver client的原理是什嗎?

[Webdriver實現原理](http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html)
通過研究selenium-webdriver的源碼,筆者發現其實webdriver的實現原理並不高深莫測無法揣度。在這裡以webdriver ruby binding的firefox-webdriver實現為例,簡單介紹一下webdriver的工作原理。
當測試指令碼啟動firefox的時候,selenium-webdriver 會首先在新線程中啟動firefox瀏覽器。如果測試指令碼指定了firefox的profile,那麼就以該profile啟動,否則的話就新啟1個profile,並啟動firefox;

firefox一般是以-no-remote的方法啟動,啟動後selenium-webdriver會將firefox綁定到特定的連接埠,綁定完成後該firefox執行個體便作為webdriver的remote server存在;

用戶端(也就是測試指令碼)建立1個session,在該session中通過http請求向remote server發送restful的請求,remote server解析請求,完成相應操作並返回response;

用戶端接受response,並分析其傳回值以決定是轉到第3步還是結束指令碼;
這就是webdriver的工作流程,看起來很複雜實際上當瞭解了webdriver的實現原理後,理解上述問題應該比較簡單。

webdriver是按照server – client的經典設計模式設計的。
server端就是remote server,可以是任意的瀏覽器。當我們的指令碼啟動瀏覽器後,該瀏覽器就是remote server,它的職責就是等待client發送請求並做出相應;
client端簡單說來就是我們的測試代碼,我們測試代碼中的一些行為,比如開啟瀏覽器,轉跳到特定的url等操作是以http請求的方式發送給被 測試瀏覽器,也就是remote server;remote
server接受請求,並執行相應操作,並在response中返回執行狀態、傳回值等資訊;
 
十四、webdriver的協議是什嗎?
 
十五、啟動瀏覽器的時候用到的是哪個webdriver協議?
 
十六、什麼是page object設計模式?

1.通俗來講,把每個頁面當成一個頁面對象,頁面層寫定位元素方法和頁面操作方法
2.用例層從頁面層叫用作業方法,寫成用例
3.可以做到定位元素與指令碼的分離
 
 
十七、什麼是page factory設計模式?
建立一個BasePage類建立多個Page類,繼承BasePage用例層調用Page類

十八、怎樣去選擇一個下拉框中的value=xx的option?
1.select類裡面提供的方法:select_by_value(“xxx”)
2.xpath的文法也可以定位到
 
 
十九、如何在定位元素後高亮元素(以調試為目的)?
1.js方法,直接讓該元素置頂
2.要是點擊後沒高亮,就用js去修改屬性吧(萬能的js)
 
二十、什麼是斷言?
1.assert,判斷測試結果與期望結果是否一致

二十一、如果你進行自動化測試方案的選型,你會選擇哪種語言,java,js,python還是ruby?
1.大python威武,js也要略懂
 
二十二、page object設定模式中,是否需要在page裡定位的方法中加上斷言?
1.不需要,page頁只做元素抓取和操作方法
 
 
二十三、page object設計模式中,如何?頁面的跳轉?
1.初始化driver參數,Page類傳driver參數

二十四、自動化測試案例從哪裡來?
1.自己寫的
2.別人寫的
(這問題有點腦殘,反正不是天上掉下來的)
 
 
二十五、你覺得自動化測試最大的缺陷是什嗎?
1.需求變動大的時候,維護成本大
 
二十六、什麼是分層測試?

1.資料層
2.介面層
3.UI層
自由發揮吧
 
二十七、webdriver可以用來做介面測試嗎?
1.不可以,webdriver是專門做web的UI自動化參數
 
總結:從整個的面試題來看,難度還是挺大的,特別是指令碼效能的最佳化這塊,如果只是會簡單的幾個元素定位是完全無法著手最佳化的。
能提這些問題出來的面試官也是有一定實力的。

 

python+selenium自動化軟體測試(第13章):selenium面試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.