Python自動化測試面試題-Selenium篇


目錄

基礎

Selenium中有幾種等待

  • 隱形等待/智能等待 dr.implicitly_wait()
  • 顯性等待 WebDriverWait
  • 強制等待 time.sleep()

Selenium中有哪些定位方式

8種

  • tag
  • 三大基本屬性 id/name/class_name
  • 鏈接 link text/partial link text
  • 高級 css selector/xpath

彈框怎么處理

4種彈框

  • div彈框、dom彈框,遮罩框 直接定位
  • alert框 dr.swich_to.alert().dismiss()
  • 彈出新窗口 不用處理/也可以切換到新窗口,然后關閉
  • BasicAuth授權框 dr.get(http://用戶名:密碼@www..)

框架頁面怎么處理 切換框架

上傳下載怎么測試

  • 上傳 <input type="file" style=“display: none"> send_keys()
  • 下載 點擊
  • flash/ 非標控件 桌面自動腳本生成exe

不確定時間的控件變化如何測試

webdriver wait

怎么對一個元素進行截圖

elm.save_snapshot()

定位不到元素如何處理

  • sleep
  • 觀察頁面 頁面有有沒有跳轉,元素有沒有出現,有沒有彈出alert
  • 元素是否在框架里
  • 元素是否在新頁面里

如何應對頁面元素變動問題

使用PageObject

Selenium的遇到flash怎么解決

使用pywinauto或其他GUI自動化工具生成exe,配合Selenium執行。

如何去定位頁面上動態加載的元素?

  • 通過正常的業務流程觸發元素加載,稍微等待后操作
  • 直接執行JavaScript腳本使元素加載,進行操作

如何去定位屬性動態變化的元素

使用其他不變的屬性定位。

Webdriver可以用來做接口測試嗎

不能

Selenium是否支持C/S模式

Selenium是一套瀏覽器自動化測試框架,支持B/S模式的應用,C/S模式僅支持部分已瀏覽器為核心的應用,一般情況下不支持C/S模式。

如何處理驗證碼

  • 繞過
  • 臨時關閉
  • 萬能碼
  • 從數據庫或日志中取
  • 發接口登錄繞過
  • 半自動手動輸入
  • 圖像識別
  • AI深度學習
  • 花錢打碼

框架封裝

UI框架如何分層

你的框架是如何設計的

  • 執行控制
  • 測試套件
  • 用例
  • 業務流 頁面對象組合,常用的業務流程
  • PageObject 頁面對象、頁面基礎類
  • 實用方法 數據讀取 數據庫操作 日志 發郵件 自己封裝的定位方法

框架是怎么選擇組合搭建的

  • 基礎引擎 unittest、pytest、robot、httprunner、自己寫
  • 數據選擇 json/yaml、csv/excel、數據庫、conf
  • 配置文件 conf/ini py xml

登出了怎么處理?

  • 增加登錄的頻次
  • 執行用例前,驗證狀態
  • 失敗重試,加上登錄

測試用例之間具有依賴處理

  • 不建議有依賴
  • 確保執行順序
  • 並發時以用例類suite為單位運行

webdriver異常怎么處理,怎么恢復場景和記錄結果

  • 記錄日志,和當時的環境信息
  • 實時截圖及保留屏幕錄像(如使用docker+zalenium)
  • 用例失敗后自動重跑(如使用pytest-rerunfailures)
  • 使用subprocess運行,並記錄子進程退出code
  • 緩存上次執行結果

垃圾數據怎么處理

  • 測試環境 執行sql
  • 生產環境 請求接口或執行UI步驟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM