Selenium 頁面自動化測試 面試 問題彙總

 

  1. 1.   專業技術

在學習完Selenium的大部分接口或者方法以後,你可能會去面試自動化測試,主要是Selenium的自動化測試。下面這些問題總結,可能會對你有所幫助。javascript

  1. 什麼是Selenium?

Selenium是一個開源的web自動化測試框架,主要是基於web uI的自動化測試。如今的版本,逐步增長了對移動端的自動化測試。Selenium支持多種語言進行開發自動化測試腳本,有Java,python,C#,Javascript等等。Selenium支持跨瀏覽器平臺測試。css

  1. Selenium是否支持桌面應用軟件的自動化測試。

      Selenium不支持桌面軟件的自動化測試,Selenium是根據網頁元素的屬性才定位元素,而其餘桌面軟件自動化測試工具是根據桌面元素的位置來定位元素,固然如今也有根據桌面元素的屬性來定位的前端

  1. Selenium是否支持用例的執行的引擎

引擎比如就是一個發動機。Selenium是沒有關於測試用例和測試套件管理和執行的模塊。咱們須要藉助第三方單元測試框架來實現用例管理和用例的執行。例如Java中有Junit或者testNG,Python中有unittest單元測試框架。java

  1. Seleinum是否有讀取excel文件的庫

沒有,這裏須要用到第三方工具。例如Apache POI插件python

  1. Selenium有哪些組件

最先的有Selenium IDE,IDE只支持安裝在fiefox上一個插件,支持錄製自動化腳本。還有remote RC,和Grid 和webdriver。咱們通常最重要的就是使用webdriver。web

  1. Selenium有什麼限制或者缺陷

   除了基於web的軟件和mobile的程序,selenium不支持桌面軟件自動化測試。軟件測試報告,和用例管理只能依賴第三方插件,例如Junit/TestNG和unittest。因爲它是免費的軟件,因此沒有供應商去提供支持和服務,有問題,只能求助selenium社區。還有一個就是,selenium入門門檻可能有點高,須要具有必定編程語言基礎的才能玩轉面試

  1. 在selenium中,有哪些不一樣定位元素方法

ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector數據庫

  1. 什麼是imlicitlyWait

imlicitlyWait是隱式等待,通常在查找元素的時候使用。例如,我設置一個查找元素最大時間爲10秒,使用了imlicitlyWait後,若是第一次沒有找到元素,會在10秒以內不斷循環去找元素,知道超過10秒,報超時錯誤。編程

  1. 什麼是線程等待

有時候,咱們須要強制設置線程等待,Thread.sleep(2000),driver這個實例,就是當前的線程。windows

  1. 你能解釋下Selenium這個框架嗎?
  2. 你寫的測試腳本能在不一樣瀏覽器上運行嗎,支持跨瀏覽器平臺嗎?

這裏出現了跨瀏覽器平臺的概念,就是寫一個測試用例,能夠在主流的幾個瀏覽器跑起來。 是的,我寫的測試用例能在IE,火狐和谷歌這三種瀏覽器上運行。主要是在windows平臺上運行腳本,因此mac的safari瀏覽器暫時沒有寫過。主要實現這個跨瀏覽器的思想就是,把瀏覽器類型寫到配置文件,代碼裏寫if語句去判斷配置文件的瀏覽器的類型,來決定用什麼瀏覽器去執行測試用例。

  1. 關閉瀏覽器中quit和close的區別

兩個均可以實現退出瀏覽器session功能,close是關閉你當前聚焦的tab頁面,而quit是關閉所有瀏覽器tab頁面,並退出瀏覽器session。知道這兩個區別,咱們就知道quit通常用在結束測試以前的操做,close用在執行用例過程當中關閉某一個頁面的操做

  1. 在日曆這種web 表單你是如何處理的?

首先要分析當前網頁試用日曆插件的前端代碼,看看能不能經過元素定位,點擊日期實現,若是不能,可能須要藉助javascript。還有些日曆控件一個文本輸入框,能夠直接sendKeys()方法來實現傳入一個時間的數據。

  1. 如何處理下拉菜單?

一般咱們也能夠經過Click方法來點擊下拉菜單裏面的元素,還有一種方法,在Selenium中有一個類叫Select,支持這種下拉菜單交互的操做。

基本使用語法是這樣的:

Select Se=new Select(element);
Se.selectByIndex(index);
Se.selectByvalue(value);
Se.selectByVisibleText(text);

 

  1. 怎麼驗證勾選框是

enable/disabled/ checked/Unchecked/ displayed/ not displayed?

  1. 你查找元素遇到過在Frame裏面嗎?你是如何處理Frame裏面元素定位的?

有時候咱們知道元素定位表達式沒有問題,可是仍是提示no such element,那麼咱們就須要考慮這個元素是否在frame中。若是在,咱們就須要從topwindow,經過swithcTo.Frame()方法來切換到目標frame中,能夠經過frame的name和id和索引三種方法來定位frame。

  1. 在selenium中如何處理多窗口?

這裏須要用到swithTo方法。

須要獲取當前瀏覽器多窗口句柄,而後根據判斷跳轉新句柄仍是舊句柄

  1. 如何處理alert彈窗

咱們常見的alert彈窗有兩種:基於windows彈窗和基於web頁面彈窗

咱們知道,webdriver是可以處理alert彈窗的,Selenium提供了Alert這個接口。相關操做代碼以下:

 

// 切換到Alert

Alert alert = driver.switchTo().alert();

// 點擊彈窗上肯定按鈕

alert.accept();

// 點擊彈窗的取消按鈕
alert.dismiss()


// 獲取彈窗上線上的文本文字內容
alert.getText();


// 有些彈窗還支持文本輸入,這個能夠把要輸入字符經過sendkeys方法輸入
alert.sendkeys();

 

  1. 19.  舉例一下你遇到過那些異常,在selenium自動化測試過程當中

1. ElementNotSelectableException :元素不能選擇異常
2. ElementNotVisibleException :元素不可見異常
3. NoSuchAttributeException :沒有這樣屬性異常
4. NoSuchElementException:沒有該元素異常
5. NoSuchFrameException :沒有該frame異常
6. TimeoutException : 超時異常
7. Element not visible at this point  :在當前點元素不可見

  1. findElement 和 FindElements有什麼區別?

首先,兩個都是查找元素,都支持八大元素定位方法。findElement()獲得的只有一個元素,若是根據提供的元素定位方式找不到,會報noSuchElement異常。

 findElements()返回的是一組元素,因此咱們須要根據可以找到一組元素的表達式去定位,返回一組元素咱們能夠放在集合裏,這樣咱們就可使用集合裏面的迭代方法去遍歷元素,拿到元素去作其餘操做。

  1. 如何獲取頁面標題,懸浮文本和錯誤文本,並驗證?

標題,咱們能夠經過driver.getTitle()方法來獲得一個字符串,而後使用字符串的containts方法或者equals方法去進行斷言。

懸浮文本(tooltip),通常是利用Actions類,而後鼠標懸停方法,而後經過getText()方法來獲得這個tooltip字符串。

 

錯誤信息,直接把這個錯誤字段先進行定位,而後經過getText()方法拿到錯誤文本,主要的斷言有包含,相等,不相等,不包含,以什麼開頭等。

  1. 你是如何管理你的測試用例並執行?

寫用例和管理並執行用例,咱們都須要藉助單元測試框架來實現,若是是Java語言通常有junit和TestNG,若是是python,常見的有unittest。

 就你實際狀況,說一下。例如我使用TestNG比較多,須要配置testng.xml文件來實現測試用例的執行。有時候須要配置多個testng.xml去實現不一樣的任務場景。再展開,可能問你一下testng框架的知識點。例如,方法依賴,用例執行優先級,數據源驅動等。

  1. 如何肯定動態加載的元素:

- xpath或者css經過同級、父級、子級進行定位

  1. 介紹一下selenium2.0

Selenium2.0 = Selenium1.0 + WebDriver(也就是說Selenium2.0合併了這兩個項目)

Rc是在瀏覽器中運行js應用,使用瀏覽器內置的js翻譯器翻譯和執行selenese命令

WebDriver是經過原生瀏覽器支持或瀏覽器擴展來直接控制瀏覽器。針對各瀏覽器而開發,避免了js安全模型致使的限制;還利用操做系統及的調用,模擬用戶輸入;

  1. 請說明selenium 2.0與3.0的區別

Selenium 2.0 =Selenium 1.0+WebDriver

Selenium 3.0捨棄rc只有driver

  1. 元素找不到可能的緣由?

1.動態id定位不到元素

2.iframe緣由定位不到元素

3.不在同一個frame裏邊查找元素

4. xpath描述錯誤

5.點擊速度過快 頁面沒有加載出來就須要點擊頁面上的元素

6.firefox安全性強,不容許跨域調用出現報錯

selenium中如何判斷元素是否存在?

 

selenium中hidden或者是display = none的元素是否能夠定位到?

 

selenium中如何保證操做元素的成功率?也就是說如何保證我點擊的元素必定是能夠點擊的?

 

如何提升selenium腳本的執行速度?

 

用例在運行過程當中常常會出現不穩定的狀況,也就是說此次能夠經過,下次就沒辦法經過了,如何去提高用例的穩定性?

 

你的自動化用例的執行策略是什麼?

 

什麼是持續集成?

 

自動化測試的時候是否是須要鏈接數據庫作數據校驗?

 

id,name,clas,x path, css selector這些屬性,你最偏心哪種,爲何?

 

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

 

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

 

點擊連接之後,selenium是否會自動等待該頁面加載完畢?

 

webdriver client的原理是什麼?

 

webdriver的協議是什麼?

 

啓動瀏覽器的時候用到的是哪一個webdriver協議?

 

什麼是page object設計模式?

 

什麼是page factory設計模式?

 

怎樣去選擇一個下拉框中的value=xx的option?

 

如何在定位元素後高亮元素(以調試爲目的)?

什麼是斷言?

若是你進行自動化測試方案的選型,你會選擇哪一種語言,java,js,python仍是ruby?

page object設置模式中,是否須要在page裏定位的方法中加上斷言?

page object設計模式中,如何實現頁面的跳轉?

自動化測試用例從哪裏來?

你以爲自動化測試最大的缺陷是什麼?

什麼是分層測試?

webdriver能夠用來作接口測試嗎?

相關文章
相關標籤/搜索