1、你覺得自動化測試的價值在哪里?你們公司為什么要做自動化測試?
引用自動化測試之后,能代替大量繁瑣的回歸測試工作,把業務測試人員解放出來,既而讓業務測試人員把精力集中在復雜的業務功能模塊上,
自動化測試一般是對穩定下來的功能進行自動化,保證不會因為產品的更新導致之前穩定下來的功能出現BUG
2、做自動化測試用的什么框架?可以說出以下自己擅長的一種:
1.python+selenium+unittest+htmltestrunner
2.python+selenium+pytest+allure
3. robotframework+Selenium2Library
3、在selenium自動化測試中,你一般完成什么類型的測試?自動化覆蓋率?
主要是冒煙測試和回歸測試。回歸測試主要寫一些功能穩定的場景,通過自動化手段去實現,節約測試時間。因為自動化測試用例也是在不斷的更新和迭代,沒有刻意去統計,大概在30%-40%左右!
4、如果一個元素無法定位,你一般會考慮哪些方面的原因?
1.頁面加載元素過慢,加等待時間
2.頁面有frame框架頁,需要先跳轉入frame框架再定位
3.可能該元素是動態元素,定位方式要優化,可以使用部分元素定位或通過父節點或兄弟節點定位。
4.可能識別了元素,但是不能操作,比如元素不可用,不可寫等。需要使用js先把前置的操作完成
5、元素定位方法你熟悉的有哪些?
id name classname link_text css xpath
6、遇到frame框架頁面怎么處理?
先用driver.switch_to.frame()跳轉進去frame,
然后再操作頁面元素,
操作完后使用driver.swith_to.default_content()跳轉出來
7、遇到alert彈出窗如何處理?
使用driver.switch_to.alert方法先跳轉到alert彈出窗口
然后再通過accept點擊確定按鈕,通過dismiss點擊取消難,通過text()獲得彈出窗口的文本
8、如何處理多窗口?
這個多窗口之間跳轉處理,我們在項目中也經常遇到。就是,當你點擊一個鏈接,這個鏈接會在一個新的tab打開,然后你接下來要在新tab打開的頁面查找元素,
1.我們在點擊鏈接前使用driver.current_window_handle獲得當前窗口句柄。
2.再點擊鏈接。點擊后通過driver.window_handles獲得所有窗口的句柄,
3.然后再循環找到新窗口的句柄,然后再通過driver.switch_to.window()方法跳轉到新的窗口
9、怎么驗證元素是enable/disabled/checked狀態?
定位元素后:分別通過isEnabled(),isSelected(),isDisplayed()三個方法進行判斷。
10、如何處理下拉菜單?
在Selenium中有一個叫Select的類,這個類支持對下拉菜單進行操作。使用方法如下:
1.定位元素
2.把定位的元素轉化成Select對象。
sel = Select(定位的元素對象)
3.通過下標或者值或者文本選中下拉框。
sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);
11、在日歷這種web 表單你是如何處理的?
首先要分析當前網頁試用日歷插件的前端代碼,看看能不能通過元素定位,點擊日期實現,如果不能,可能需要借助javascript。還有些日歷控件一個文本輸入框,可以直接sendKeys()方法來實現傳入一個時間的數據。
12、常見的selenium異常有哪些:
NoSuchElementException:沒有該元素異常
TimeoutException : 超時異常
ElementNotVisibleException :元素不可見異常
NoSuchAttributeException :沒有這樣屬性異常
NoSuchFrameException :沒有該frame異常
13、關閉瀏覽器中quit和close的區別
兩個都可以實現退出瀏覽器session功能,close是關閉你當前聚焦的tab頁面,而quit是關閉全部瀏覽器tab頁面,並退出瀏覽器session。
quit一般用在結束測試之前的操作,close用在執行用例過程中關閉某一個頁面的操作。
14、在Selenium中如何實現截圖,如何實現用例執行失敗才截圖
在Selenium中提供了一個get_screenshot_as_file()的方法來截圖的,一般結合try/except捕獲異常時使用,進行錯誤截圖。
15、如何實現文件上傳?
定位元素后,直接使用send_keys()方法設置就行,參數為需要上傳的文件的路徑。
16、自動化中有哪三類等待?他們有什么特點?
1.線程等待(強制等待)如time.sleep(2):線程強制休眠2秒鍾,2秒過后,再執行后續的代碼。建議少用。
2.imlicitlyWait(隱式等待)會在指定的時間范圍內不斷的查找元素,直到找到元素或超時,特點是必須等待整個頁面加載完成。
3.WebDriverWait(顯式等待)通常是我們自定義的一個函數代碼,這段代碼用來等待某個元素加載完成,再繼續執行后續的代碼
17、你寫的測試腳本能在不同瀏覽器上運行嗎
當然可以,我寫的用例可以在在IE,火狐和谷歌這三種瀏覽器上運行。
實現的思路是封裝一個方法,分別傳入一個瀏覽器的字符串,如果傳入IE就使用IE,如果傳入FireFox就使用FireFox,如果傳入Chrome就使用Chrome瀏覽器,並且使用什么瀏覽器可以在總的ini配置文件中進行配置。
需要注意的是每個瀏覽器使用的驅動不一樣。
18、什么是PO模式,為什么要使用它
PO是Page Object 模式的簡稱,它是一種設計思想,意思是,把一個頁面,當做一個對象,頁面的元素和元素之間操作方法就是頁面對象的屬性和行為,
PO模式一般使用三層架構,分別為:基礎封裝層BasePage,PO頁面對象層,TestCase測試用例層。
轉載:https://www.cnblogs.com/mrjade/p/12737889.html