必讀 30 個 Selenium 面試問題和答案:2022 年終極指南

已發表: 2021-01-04

您是否正在參加一個重要的面試,並想知道您將通過哪些Selenium 面試問題

我們創建了這個閱讀最多的 Selenium 面試問題和答案指南,以幫助您了解問題的深度並自信地面對它。

如今,Web 應用程序正在興起。 隨著對 Web 應用程序的需求不斷增長,也不可避免地需要測試這些 Web 應用程序。 這就是 Selenium 發揮作用的地方。 Selenium 是常用的自動化測試工具之一,可確保 Web 應用程序正常運行。 如果測試是手動完成的,它會佔用幾個工時,也會增加成本。

此外,由於它們是手動的,因此容易出錯。 從長遠來看,手動測試無濟於事,因此,像 Selenium 這樣的自動化測試正在行業中獲得需求。 如果你正在追求你的自動化測試職業,並且即將在 Selenium 進行面試,那麼這個博客就是為你準備的。

在這篇博客中,我們將在這裡討論最常見的 Selenium 面試問題。 這些既適用於初學者,也適用於有經驗的 Selenium 面試問題。

Selenium 面試問答 2022

Q.1) 為什麼選擇 Selenium 而不是其他自動化測試工具?

Selenium 是開源的。 與市場上的其他自動化工具相比,它非常容易適應。 由於這個原因,許多公司選擇 Selenium 自動化測試而不是其他傳統方法。

Q.2) 列出 Selenium 相對於 TestComplete 和 QTP 等工具的一些優勢。 另外,有什麼缺點嗎?

與 TestComplete 和 QTP 不同,Selenium 不需要許可證,很容易獲得。 在線社區提供了大量支持。 與TestComplete和QTP相比,發布週期更小,反饋更及時。 此外,Selenium 也適用於 Mac、Linux 和 Windows。

相反,Selenium 要求開發人員具有較高的編碼技能。 而 QTP 和 TestComplete 分別需要低到中等水平的編碼技能。

Q.3) 各種 Selenium 版本升級發生了哪些變化?

在 Selenium 的第一個版本 Selenium v​​1 中,它僅包含三套工具,即 Selenium IDE、RC 和 Grid。 Webdriver 丟失。 僅在 Selenium 的第二個版本 Selenium v​​2 中引入了 Webdriver。 完成此操作後,Selenium RC 將不再使用。

您可以在市場上找到它們,但不提供支持。 Selenium 的下一個版本是 Selenium v​​3。 它由 Webdriver、IDE 和 Grid 組成。 它目前正在使用中。 現在也可以使用更新的版本 Selenium v​​4。

Selenium IDE 主要用於錄製和回放。 Webdriver 用於使用編程接口測試動態 Web 應用程序。 網格用於在遠程主機中進行測試。

您必須使用 IDE 來記錄和回放測試。 WebDriver 用於使用編程接口測試活動的 Web 應用程序,而 Grid 用於在隔離的主機中部署測試。

Q.4) Selenium WebDriver 中的各種例外情況是什麼?

就像任何其他編程語言一樣,您也可以在 Selenium 中找到異常。 您可以在 Selenium WebDriver 中找到以下異常:

TimeoutException:當命令在指定時間內未執行操作時,您會收到此異常。

NoSuchElementException:當它在網頁上找不到具有給定屬性的元素時,會出現此異常。

ElementNotVisibleException:當一個元素在文檔對像模型中可用但在網頁上看不到時,您會收到此異常。

StaleElementException:當元素未附加到文檔對像模型或被刪除時,您會收到此異常。

Q.5) 解釋 Selenium 異常測試

您期望在測試類中拋出的異常是異常測試。 如果您編寫了一個打算拋出異常的測試用例,則必須使用 @test 註釋並在參數中提及它會拋出哪個異常。 例如,

@Test(expectedException = NoSuchElementException.class)

Q.6) 項目中是否需要 Excel 表格? 是的,怎麼樣?

Excel 工作表在測試期間用作數據源。 此外,它還在執行數據驅動測試時存儲數據集。 當excel表作為數據源時,可以存儲:

應用程序 URL:開發人員可以提及執行測試的環境 URL。 例如,測試環境、開發環境、QA 環境、生產環境或暫存環境。

用戶名和密碼信息:Excel表格可以保護各種環境的密碼用戶名等訪問憑證。 出於安全原因,開發人員可以加密和存儲這些詳細信息。

測試用例:開發人員可以製作一張表格,其中一列寫測試用例名稱,另一列寫要執行或不執行。

如果您打算使用 Excel 表進行 DataDriven 測試,您可以輕鬆存儲測試期間要執行的各種重複的信息。 例如,所有需要寫入文本框中以在網頁上進行測試的數據都可以存儲在 Excel 工作表中。

Q.7) 什麼是 POM? 列出它的優點?

POM 代表頁面對像模型。 它是一種為 Web UI 元素創建對象存儲庫的設計模式。 應用程序中的每個網頁都必須有自己對應的頁麵類,該類負責搜索該頁面中的 WebElement,然後對其執行操作。

使用 Page 對像模型的優點是:

  • 它通過讓開發人員將操作和 UI 流與驗證分開來使代碼可讀。
  • 多個測試可以使用相同的對象存儲庫,因為它獨立於測試用例。
  • 代碼變得可重用。

Q.8) 什麼是頁面工廠?

頁面工廠提供了一種增強的方法來通過有效地使用內存來執行頁面對像模型,並且執行是使用面向對象的設計完成的。

POM 實現
使用頁面工廠沒有頁面工廠
使用 By() 使用@FindBy()
不需要進口進口頁面工廠
沒有緩存存儲緩存查找速度更快

頁面工廠初始化頁面對象的元素或實例化頁面對象本身。 也可以生成元素的註釋。 事實上,這是一種更好的方法,因為描述屬性可能不足以將一個對象與另一個對象區分開來

如果在沒有頁面工廠的情況下使用 POM,而不必使用“FindElements”,@FindBy 用於查找 WebElement,而 initElements 用於從 Page Factory 類初始化 Web 元素。

@FindBy 可以接受 tagName、name、partialLinkText、linkText、id、className、css 和 xpath 等屬性。

Q.9) 如何在 WebDriver 中實現同步? 或者,告訴我們不同類型的等待語句 Selenium Web Driver?

您可以在 Selenium Web 驅動程序中找到兩個等待語句,即隱式等待和顯式等待。

隱式等待命令 WebDriver 通過輪詢 DOM 稍等。 一旦聲明了隱式等待,它就會在 Web 驅動程序實例的整個生命週期中存在。 預設值為零。 如果您將其設置為大於零,則行為將根據驅動程序實現定期輪詢 DOM。

顯式等待命令執行等待一點,直到達到如下條件:

  • elementToBeClickable
  • PresenceOfElementLocated
  • 待選元素

閱讀:春季面試問答

10) JavaScriptExecutor 有什麼用?

您可以使用 JavaScriptExecutor 通過 Selenium Websriver 執行 JavaScript。 它是一個提供這種機制的接口。 它提供了諸如“executescript”和“executeAsyncScript”之類的方法來在當前選擇的框架或窗口的條件下運行 JavaScript。 一個例子是:

JavascriptExecutor js = (JavascriptExecutor) 驅動程序;

js.executeScript(腳本,參數);

Q.11) 哪個函數可以讓你在 Selenium 中使用 JavaScript 向下滾動頁面?

函數 window.scrollBy() 幫助您在 Selenium 中使用 JavaScript 向下滾動頁面。 例如:

((JavascriptExecutor) 驅動程序).executeScript(“window.scrollBy(0,500”);

Q.12) 你如何使用 Selenium 處理鼠標和鍵盤操作?

使用高級用戶交互 API 處理特殊的鼠標和鍵盤操作。 它由執行這些事件所需的動作和動作類組成。 最常用的鼠標和鍵盤事件由 Action 類給出:

dragAndDrop():此事件在源元素的位置執行單擊並按住,移動。

source, target():移動到目標元素的位置並釋放鼠標。

clickAndHold():它點擊鼠標的當前位置。

Q.13) 有哪些不同類型的 Selenium 框架?

各種類型的 Selenium 框架包括:

  • 關鍵字驅動框架:在這個框架中,操作和指令被寫在一個單獨的文件中,比如 Excel。
  • 數據驅動框架:在這個框架中,完整的測試數據取自一些外部源文件,如 XML、Excel、CSV 或其他一些數據庫表。
  • 混合框架:該框架融合了關鍵字驅動框架和數據驅動框架。

Q.14) 列舉幾個作為各種 Selenium 框架的數據源的文件。

它們可以是 XML、Excel、CSV,甚至是文本文件。

Q.15) 什麼是硒?

Selenese 是一組用於測試 Web 應用程序的 selenium 命令。 開發人員可以使用斷言、操作和訪問器。 斷言用作檢查點。 動作用於運行操作,訪問器用於存儲變量的值。

Q.16) 頁面工廠和頁面對像模型 (POM) 之間的主要區別是什麼?

一個常見的硒面試問題。 頁面工廠是一種在創建實例時初始化頁面對象內的 Web 元素的方法。 另一方面,頁面對像模型是一個描述網頁並保存其功能的類。

Q.17) Selenium 是否支持處理彈出窗口?

不,Selenium 不支持處理彈出窗口。 警報是一個彈出窗口,在屏幕上顯示警告消息。 您可以通過使用以下幾種方法來實現此目的:

voiddismiss():當在alert框中點擊取消按鈕時,調用該方法。

void accept():當點擊警報的“確定”按鈕時,調用此方法。

String getText():如果要捕獲警報消息,則必須調用此方法。

void sendKeys(String stringToSed):如果要向alert box發送一些信息,必須調用該方法。

閱讀: React 面試問答

Q.18) 解釋機器人類

Robot 類提供對鍵盤和鼠標設備的控制。

這些方法包括:

  • KeyPress():在您要按下某個鍵的事件上調用。
  • KeyRelease():在事件中調用以釋放按下的鍵。
  • MouseMove():當您必須在 X 和 Y 坐標上移動鼠標指針時在事件中調用。
  • MousePress():在按下鼠標左鍵的事件中調用。
  • MouseMove():在釋放鼠標按下的按鈕時調用。

Q.19) 如何在 Selenium 中處理多個窗口?

窗口句柄是一個特殊的標識符,它具有所有窗口的地址。 它用作指向返回字符串中的值的窗口的指針。

  • get.windowhandle():獲取當前窗口句柄。
  • get.windowhandles():獲取所有打開的窗口的句柄。
  • 切換到:幫助切換窗口。
  • set:設置窗口句柄,字符串形式。
  • action:幫助在windows上執行某些動作。

Q.20) 什麼是聽眾?

改變系統行為的接口在 Selenium 中稱為監聽器。 它們支持自定義日誌和報告。 它們有兩種:TestNG 偵聽器和 Webdriver 偵聽器。

Q.21) 解釋斷言和驗證命令

斷言:斷言用於區分真實結果和預期結果。

驗證:無論驗證條件是真還是假,測試執行都不會暫停。

Q.22) 如何在網頁上來回導航?

這是最常見的硒面試問題之一。

您可以使用以下方法來回導航。

driver.navigate.forward

driver.manage.navigate

driver.manage.back

driver.navigate.to(“網址”)

Q.23) 如何在 Selenium WebDriver 中發送 ALT/SHIFT/CONTROL 鍵?

通常使用 ALT、Shift 或 Control 等鍵,我們將它們與其他鍵組合以激活功能。 我們不能只點擊它們。 我們需要定義兩種方法來保持這些鍵,而以下鍵是

按下:keyUp(modifier_key) 和 keyDown(modifier_key)

參數:Modifier_key(keys.ALT 或 Keys.SHIFT 或 Keys.CONTROL)

Objective: 目的是在不釋放修改鍵的情況下執行修改鍵。 以下交互可能會假設它一直處於按下狀態。

參數:Modifier_key(keys.ALT 或 Keys.SHIFT 或 Keys.CONTROL)

目標:目的是執行密鑰釋放。

因此,通過混合使用這兩種方法,我們可以捕獲特定鍵的特殊功能。

Q.24) 我們如何在 Selenium WebDriver 中截屏?

TakeScreenshot 函數有助於在 Selenium Webdriver 中截取屏幕截圖。 此外,您可以使用 getScreenshotAs() 方法保存屏幕截圖。

文件 scrFile = ((TakeScreenshot)driver).getScreenshotAs(outputType.FILE);

Q. 25) 我們可以使用 Selenium 設置瀏覽器窗口的大小嗎? 如果是,如何?

是的。 如果你想最大化瀏覽器窗口的大小,你需要使用代碼

driver.manage().window().maximize();

如果您希望將當前窗口調整為特定尺寸,則必須使用 setSize() 方法。 例如:

System.out.println(driver.manage().window().getSize());

維度 d = 新維度(420,600);

driver.manage().window().setSize(d);

如果您希望將窗口設置為特定大小,則必須使用 window.resizeTo() 方法。

例如:

((JavascriptExecutor)driver).executeScript(“window.resizeTo(1024, 768);”);

Q.26) 如何從下拉列表中選擇一個值? 如何處理下拉菜單?

你很可能會被問到一個關於下拉和選擇值的問題,因為它也有點棘手和技術性。

您必須知道的最重要的細節是,要在 Selenium 中使用下拉菜單,使用 html 標籤很重要:'select'。 如果不使用 select 標籤,您將無法處理下拉菜單。 看看下面的代碼:

<選擇 id=”mySelect”>

<option value=”option1″>蛋糕</option>

<option value=”option2″>巧克力</option>

<option value=”option3″> 糖果</option>

</選擇>

在上面的代碼中,一個 HTML 'select' 標籤用於定義一個下拉元素。 這裡select標籤的ID是myselect。 我們在下拉列表中提供了三個選項:蛋糕、巧克力和糖果。 您可以看到這些選項中的每一個都有一個附加的 value 屬性。 例如,Cake 的值為 Option1,Chocolates 的值為 Option2,Candies 的值為 Option3。

要選擇一個值,您需要:

使用 findelement() 識別“選擇”html 元素

例子:

WebElement mySelectElement = driver.findElement(By.id(“mySelect”));

選擇下拉=新選擇(mySelectElement);

從該下拉元素中選擇一個選項。

要從該下拉列表中選擇一個選項,有以下三種方法:

dropdown.selectByVisibleText(“巧克力”); → 通過看到的文本選擇一個選項。

dropdown.selectByIndex(“1”); → 使用該選項的索引號選擇一個選項。

dropdown.selectByValue(“option2”); → 使用該選項的值選擇一個選項。

請注意,在所有情況下,都會從下拉列表中選擇“巧克力”選項。 第1點和第3點很明顯,第2點; 我們說“1”是因為索引從零開始。

閱讀:頂級 Nagios 面試問題和答案

Q.27) 你如何跳到點擊鏈接後打開的新標籤頁?

單擊網頁上的鏈接時,您需要使用 switchTo() 命令來更改 Webdriver 的焦點。 示例:driver.switchTo().window();

其中 'windowName' 是窗口的名稱,您要將焦點切換到。

如果您沒有窗口的名稱,您可以使用 driver.getWindowHandle() 命令獲取由 WebDriver 啟動的所有窗口的名稱。 請記住,它永遠不會為您提供 Webdriver 未啟動的那些窗口的名稱。

獲得名稱後,您需要通過循環運行才能到達該窗口。 這是一個例子:

字符串句柄= driver.getWindowHandle();

for (字符串句柄: driver.getWindowHandles())

{

driver.switchTo().window(句柄);

}

Q.28) 如何在 Selenium WebDriver 中上傳文件?

命令 element.send_keys(file path) 用於在 Selenium Webdriver 中上傳文件。 但在此之前,您必須使用 html 標籤:'input',其中屬性類型應為 'file'。 這是一個更好地理解它的示例:

<input type=”file” name=”my_uploaded_file” size=”50″ class=”pole_plik”>

element = driver.find_element_by_id(”my_uploaded_file”)

element.send_keys(“C:myfile.txt”)

Q.29) testng.xml 的重要性是什麼?

如果你正在面試 Selenium,你肯定知道測試的重要性。 Selenium 不支持報告的生成以及測試用例管理。 因此,我們將 TestNG 框架與 Selenium 一起使用。 與 Junit 相比,它更先進,並且更容易實現註釋,使 TestNG 框架成為 Selenium Webdriver 的選擇。

通過從 testing.xml 文件中獲取命令,您可以在 TestNG 中定義測試套件和測試類的分組。 它在一個 XML 文件中表示,而不是在測試源代碼中的測試套件中,因為該套件是一個執行功能。 測試套件是一組或一組測試用例。

testng.xml 文件應包含您希望作為該執行流的一部分執行的所有方法和類的名稱。

使用 testng.xml 文件的一些優點是:

  • 它允許執行來自多個類的多個測試用例
  • 它允許在組中執行測試用例,其中單個測試可以屬於多個組。
  • 它允許並行執行。

Q. 30) 在 TestNG 中解釋 DataProviders。 是否可以為多個函數和類調用單個數據提供者方法?

高級硒面試題之一。 DataProvider 是 TestNG 的一項功能,使開發人員能夠編寫 DataDriven 測試。 它支持 DataDriven 測試,這意味著相同的測試方法可以使用不同的數據集多次運行。 DataProvider 只是一種將參數傳遞給測試方法的方法。

@DataProvider 是一種為測試方法提供數據的方法。 帶註釋的方法必須返回一個 Object[],其中每個 Object[] 都可以分配給測試方法的參數列表。

是的。 可以為多個函數和類調用單個數據提供者方法。 通過在單獨的類中聲明 DataProvider 然後在多個類中再次使用它,可以在多個函數和類中使用相同的 DataProvider。

Q. 31) TestNG 有什麼特點?

  • 註釋前後
  • 基於 XML 的測試配置
  • 多線程執行
  • 開放式 API
  • 更好的報告
  • 數據驅動的測試
  • 依賴組。
  • 依賴方法

從世界頂級大學獲得軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

Selenium 面試問答指南即將結束,我們希望這可以幫助您找到工作。 Selenium 針對有經驗的面試問題更具技術性,但由於工作競爭激烈,為面試做好充分準備總是很好。

如果您有興趣學習 Selenium、DevOps 以及有關全棧開發的所有內容,請查看全棧軟件開發計劃中的 IIIT-B 和 upGrad 執行 PG 計劃。

為未來的職業做準備

立即申請軟件工程碩士