Q1.如果一個元素無法定位,你一般會考慮哪些方面的原因?
1.頁面加載元素過慢,加等待時間
2.頁面有frame框架頁,需要先跳轉入frame框架再定位
3.可能該元素是動態元素,定位方式要優化,可以使用部分元素定位或通過父節點或兄弟節點定位。
4.可能識別了元素,但是不能操作,比如元素不可用,不可寫等。需要使用js先把前置的操作完成,
Q2:舉例說明使用selenium框架所遇到的異常
NoSuchElementException:沒有該元素異常
TimeoutException : 超時異常
ElementNotVisibleException :元素不可見異常
NoSuchAttributeException :沒有這樣屬性異常
NoSuchFrameException :沒有該frame異常
Q3:關閉瀏覽器中quit和close的區別
簡單來說,兩個都可以實現退出瀏覽器session功能,close是關閉你當前聚焦的tab頁面,而quit是關閉全部瀏覽器tab頁面,並退出瀏覽器session。知道這兩個區別,我們就知道quit一般用在結束測試之前的操作,close用在執行用例過程中關閉某一個頁面的操作。
Q4:什么是PO模式,為什么要使用它
PO是Page Object 模式的簡稱,它是一種設計思想,意思是,把一個頁面,當做一個對象,頁面的元素和元素之間操作方法就是頁面對象的屬性和行為,PO模式一般使用三層架構,分別為:基礎封裝層BasePage,PO頁面對象層,TestCase測試用例層。
好處:
PO模式是一種自動化測試設計模式,將業務邏輯和測試邏輯分開,也就是把對象的定位和測試腳本分開,從而提高可維護性。(換個項目只要改寫業務邏輯不用改動測試邏輯)
使業務更清晰
代碼更利於維護
可以復用
Q5: python中_ _ init _ _ 和 _ _ new _ _ 區別是什么?
在python的面向對象中,利用new方法創建對象,然后把這個創建的對象傳遞到init函數中,以第一個參數進
Q6:高質量的自動化腳本應該具備哪些特性?
不需要深入的工作或計划。
可以加快開始自動化。
對實際執行操作可以審計跟蹤。
用戶不必是編程人員。
提供良好的(軟件或工具)的演示。
Q7:selenium工作原理
我們使用Selenium實現自動化測試,主要需要3個東西
1.測試腳本,可以是python,java編寫的腳本程序(也可以叫做client端)
2.瀏覽器驅動, 這個驅動是根據不同的瀏覽器開發的,不同的瀏覽器使用不同的webdriver驅動程序且需要對應相應的瀏覽器版本,比如:geckodriver.exe(chrome)
3.瀏覽器,目前selenium支持市面上大多數瀏覽器,如:火狐,谷歌,IE等
驅動過程分析
- 對於每一條Selenium腳本,一個http請求會被創建並且發送給瀏覽器的驅動
- 瀏覽器驅動中包含了一個HTTP Server,用來接收這些http請求
- HTTP Server接收到請求后根據請求來具體操控對應的瀏覽器
- 瀏覽器執行具體的測試步驟
- 瀏覽器將步驟執行結果返回給HTTP Server
- HTTP Server又將結果返回給Selenium的腳本,如果是錯誤的http代碼我們就會在控制台看到對應的報錯信息。