selenium 自動化測試部分面試題

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

  1. 專業技術
    1. 什麼是Selenium

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

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

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

  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入門門檻可能有點高,須要具有必定編程語言基礎的才能玩轉windows

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

ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector跨域

  1. 什麼是imlicitlyWait

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

  1. 什麼是線程等待

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

  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. 舉例一下你遇到過那些異常,在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安全性強,不容許跨域調用出現報錯

相關文章
相關標籤/搜索