一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

自動化測試Selenium最新面試題和對應(yīng)答案!

 _bolo 2020-03-17

問題1:Selenium是什么,流行的版本有哪些?

Selenium是基于Web的最流行的UI自動化測試工具。它提供了一組支持多種平臺的公開API(例如Linux,Windows,Mac OS X等)。此外,像Google Chrome,Mozilla Firefox,Internet Explorer和Safari等所有現(xiàn)代瀏覽器都可以用來運行Selenium測試。它也涵蓋了Android平臺,其中Appium是實現(xiàn)Selenium Webdriver界面的工具,用于移動自動化。

值得注意的是,除了許多后來的小型版本之外,硒還有三個主要版本:

Selenium 1.0或Selenium RC,于2004年初發(fā)布,提供了一個使用服務(wù)器與瀏覽器交換命令和響應(yīng)的API集。

Selenium 2.0或Selenium Webdriver,在2011年中推出,并在Selenium功能中引入了一系列重大改進。這些新的API完全取代了服務(wù)器組件,并與目標(biāo)瀏覽器本地交互。

Selenium 3.0,這個版本是在2016年末發(fā)布的大版本。它帶來的主要變化是引入Webdriver API的W3C規(guī)范,用于瀏覽器自動化。也就是說,每個主要的瀏覽器都會有自己的Webdriver API來實現(xiàn)功能。

問題2:你如何從命令行啟動Selenium RC?

// 簡單的啟動Selenium RC的方法是

java -jar selenium-server.jar

// 在瀏覽器中運行一套Selenese腳本

java -jar selenium-server.jar -htmlSuite

問題3:在我的機器端口4444不是免費的。我怎樣才能使用另一個端口?

//你可以在運行selenium服務(wù)器時指定端口為 -

Java -jar selenium-server.jar -port 5555

問題4:什么是Selenium Server,它與Selenium Hub有什么不同?

Selenium Server是使用單個服務(wù)器作為測試節(jié)點的一個獨立的應(yīng)用程序。 Selenium hub代理一個或多個Selenium的節(jié)點實例。一個hub 和多個node被稱為Selenium grid。運行SeleniumServer與在同一主機上用一個hub和單個節(jié)點創(chuàng)建de Selenium grid類似。

問題5:你如何從Selenium連接到數(shù)據(jù)庫?

Selenium是一個Web UI自動化工具。它不提供任何API來建立數(shù)據(jù)庫連接。這取決于你使用Selenium進行自動化的編程語言。在下面的例子中,我們假設(shè)正在使用Java。

一個Connection對象表示與數(shù)據(jù)庫的連接。當(dāng)我們使用連接方法連接到一個數(shù)據(jù)庫時,我們創(chuàng)建了一個連接對象,它代表了與數(shù)據(jù)庫的連接。單個數(shù)據(jù)庫可能有一個連接或多個連接,還可能有多個連接到不同的數(shù)據(jù)庫上。

我們可以使用Connection對象來做以下事情:

  • 創(chuàng)建用于執(zhí)行SQL語句的Statement,PreparedStatement和CallableStatement對象。

  • 可以幫助我們提交或回滾一個JDBC事務(wù)。

  • 如果你想知道連接到的數(shù)據(jù)庫或數(shù)據(jù)源信息,Connection對象通過使用DatabaseMetaData就可以收集有關(guān)數(shù)據(jù)庫或數(shù)據(jù)源的信息。

  • 可以幫助我們關(guān)閉數(shù)據(jù)源。Connection.isClosed() 方法只有在調(diào)用了Connection.close()時才返回true 。此方法用于關(guān)閉所有連接。

首先我們需要通過使用DriverManager.getConnection()方法,建立與數(shù)據(jù)庫的連接。這個方法接受一個包含URL的字符串。DriverManager類嘗試查找可以連接到由字符串URL表示的數(shù)據(jù)庫的驅(qū)動程序。每當(dāng)調(diào)用getConnection()方法時,DriverManager類都會檢查可以連接到URL中指定的數(shù)據(jù)庫的所有已注冊的Driver類的列表。

句法:

String url = "jdbc: odbc: makeConnection";

Connection con = DriverManager.getConnection(url, "userID", "password");

問題6:Selenium RC中定位器方法有哪些?

  1. ID

  2. Name

  3. CSS (Cascade Stylesheet)

  4. XPATH (Relative XPath and Absolute XPath)

  5. Dom

問題7:你如何驗證多個頁面上存在的一個對象?

可以使用下面的Selenium命令來檢查:

assertTrue(selenium.isElementPresent(locator));

 

問題8:XPath中使用單斜杠和雙斜杠有什么區(qū)別?

  • 如果XPath是從文檔節(jié)點開始,它將允許創(chuàng)建“絕對”路徑表達式。

例如 “/ html / body / p”匹配所有的段落元素。

  • 如果XPath在文檔中的任意位置開始進行選擇匹配,那么它將允許創(chuàng)建“相對”路徑表達式。

例如 “// p”匹配所有的段落元素。

問題9:如何編寫Selenium IDE / RC的用戶擴展?

用戶擴展(UX)存儲在Selenium IDE或Selenium RC用來激活擴展的單獨文件中。它包含用JavaScript編寫的函數(shù)定義。

因為Selenium的核心是用JavaScript開發(fā)的,所以要符合原語言的標(biāo)準(zhǔn)規(guī)則來創(chuàng)建擴展。要創(chuàng)建一個擴展,我們必須用下面的設(shè)計格式來編寫函數(shù)。

// 樣例

Selenium.prototype.doFunctionName = function(){

}

函數(shù)名稱前面的“do”告訴Selenium這個函數(shù)可以被調(diào)用為一個步驟命令,而不是作為內(nèi)部函數(shù)或私有函數(shù)被調(diào)用。

問題10:如何在頁面加載成功后驗證元素的存在?

它可以通過下面的代碼行來實現(xiàn)。

只需一點時間(以秒為單位)來檢查元素,如下所示:

public void waitForElementPresent(String element, int timeout) throws Exception {

for (int second = 0;; second++) {

if (second >= timeout)

fail("Timeout. Unable to find the Specified element" + element);

try {

if (selenium.isElementPresent(element))

break;

} catch (Exception e) {

}

Thread.sleep(1000);

}

}

問題11:你對Selenium Grid有什么了解?它提供了什么功能?

Selenium Grid是一款利用現(xiàn)有計算基礎(chǔ)架構(gòu)大幅加速Web應(yīng)用程序功能測試的工具。允許測試者輕松地在多臺機器上并行運行多個測試,并且可以在異構(gòu)環(huán)境中運行。

基于優(yōu)秀的Selenium Web測試工具,Selenium Grid允許測試者并行運行多個Selenium Remote Control實例。更好的是,它集成顯示所有Selenium遠(yuǎn)程控制,所以不必?fù)?dān)心實際的基礎(chǔ)設(shè)施。Selenium Grid將運行Selenium測試套件所需的時間,縮短到Selenium實例的單個實例運行時間的一小點。

問題12:如何從你的Java Class啟動Selenium服務(wù)器?

try {

seleniumServer = new SeleniumServer();

seleniumServer.start();

} catch (Exception e) {

e.printStackTrace();

}

問題13:Selenium中有哪些驗證點?

Selenium主要有三種驗證點 -

  • 檢查頁面標(biāo)題

  • 檢查某些文字

  • 檢查某些元素(文本框,下拉菜單,表等)

問題14:什么是XPath?什么時候應(yīng)該在Selenium中使用XPath?

XPath是一種在HTML / XML文檔中定位的方法,可用于識別網(wǎng)頁中的元素。如果沒有與頁面上的元素相關(guān)聯(lián)的名稱/ ID,或者名稱/ ID的一部分是常量,則必須使用XPath。

絕對路徑用 - / 單斜杠

相對路徑用 - // 雙斜杠

ID,類,名稱也可以用于XPath :

  • //input[@name=’q’]

  • //input[@id=’lst-ib’]

  • //input[@class=’ lst’]

如果id / name / class的一部分是常量 :

  • //input[contains(@id,’lst-ib’)

問題15:什么是Selenium的CSS定位器策略?用例子來解釋。

CSS位置策略可以與Selenium一起使用來定位元素,它使用CSS定位方法,其中 -

絕對路徑用 - (空格符號)

相對路徑用 - >表示

ID,類,名稱也可以用于XPath:

  • css=input[name=’q’]

  • css=input[id=’lst-ib’] or input#lst-ib

  • css=input[class=’lst’] or input.lst

如果id / name / class只有一部分是常量:

  • css=input[id*=’lst-ib’)]

使用內(nèi)部文本的元素位置策略:

  • css = a:contains(‘log out’)

問題16:當(dāng)有很多定位器時,如ID、名稱、XPath、CSS定位器,我應(yīng)該使用哪一個?

如果有唯一的名稱或標(biāo)識符可用,那么應(yīng)該使用它們來代替XPath和CSS定位器。如果沒有,那么CSS定位器應(yīng)該被優(yōu)先考慮,因為在大多數(shù)現(xiàn)代瀏覽器中,它們的評估速度比XPath更快。

問題17:在硒中處理多個彈出窗口的機制是什么?

可以使用命令getWindowHandles()來處理多個彈出窗口。

然后將所有窗口名稱存儲到Set變量中并將其轉(zhuǎn)換為數(shù)組。

接下來,通過使用數(shù)組索引,導(dǎo)航到特定的窗口。

driver.switchTo().window(ArrayIndex);

問題18:你如何處理使用Selenium的Ajax控件?

來看一個例子。假如一個文本框是一個Ajax控件,當(dāng)我們輸入一些文本時,它會顯示自動建議的值。

處理這樣的控件,需要在文本框中輸入值之后,捕獲字符串中的所有建議值;然后,分割字符串,取值就好了。


Part2. WebDriver相關(guān)面試問題和答案

問題19:Selenium Webdriver優(yōu)于Selenium RC的優(yōu)點是什么?

Selenium RC的架構(gòu)相當(dāng)復(fù)雜,WebDriver的架構(gòu)比Selenium RC簡單些。

  • Selenium RC比較慢,因為它使用了另外一個名為Selenium Core的JavaScript程序。相反,WebDriver比Selenium RC更快,因為它直接與瀏覽器對話,并使用瀏覽器自己的引擎來進行控制。

  • 像其他JavaScript代碼一樣,Selenium Core可以訪問禁用的元素。Webdriver以更現(xiàn)實的方式與頁面元素進行交互。

  • Selenium RC的API集已經(jīng)有所改進,但是仍有經(jīng)常讓人困惑的冗余部分。WebDriver API更簡單,不包含任何冗余或混淆的命令。

  • Selenium RC無法支持無頭HtmlUnit瀏覽器。它需要一個真正的、可見的瀏覽器來操作。Web Driver可以支持無頭HtmlUnit瀏覽器。

  • Selenium RC內(nèi)置了測試結(jié)果生成器,并自動生成測試結(jié)果的HTML文件。Web驅(qū)動程序沒有自動生成測試結(jié)果文件的內(nèi)置命令。

問題20:“GET”和“NAVIGATE”方法的主要區(qū)別是什么?

Get方法能獲得一個頁面進行加載、或獲取頁面源代碼、或獲取文本,就這三。而Navigate將通過刷新,回退,前進的方式導(dǎo)航。

例如 -如果我們想要前進,并做一些功能,并返回到主頁。

這可以通過調(diào)用< navigate()>方法來實現(xiàn)。

driver.get() 方法會等到整個頁面被加載后才可以,而driver.navigate()只是重定向到該網(wǎng)頁,并不會等待。

問題21:隱式等待與顯式等待有什么不同?

隱式等待是設(shè)置的全局等待,分為1、頁面加載超時等待 ;2、頁面元素加載超時;3、異步腳本超時。如果是頁面元素超時,設(shè)置等待時間,是對頁面中的所有元素設(shè)置加載時間。隱式等待是其實可以理解成在規(guī)定的時間范圍內(nèi),瀏覽器在不停的刷新頁面,直到找到相關(guān)元素或者時間結(jié)束。

顯式等待只是用于特定搜索的一個計時器。它的可擴展性更強,你可以設(shè)置它來等待任何條件。通常情況下,可以使用一些預(yù)先構(gòu)建的條件來等待元素變得可點擊,可見,不可見等,或者只是編寫適合需求的條件。

問題22:你將如何處理Selenium WebDriver中的警報/彈出窗口?

有兩種類型的警報通常被引用。

  • 基于Windows的警報彈出窗口

  • 基于Web的警報彈出窗口

基于Web的警報彈出窗口。

  1. WebDriver為用戶提供了一種使用Alert界面處理這些彈出窗口的非常有效的方法。

  2. void dismiss() - 一旦出現(xiàn)彈出窗口,dismiss()方法就會點擊“Cancel”按鈕。

  3. void accept() - 只要彈出窗口出現(xiàn),accept()方法就會點擊“Ok”按鈕。

  4. String getText() - getText()方法返回警告框中顯示的文本。

  5. void sendKeys(String stringToSend) - sendKeys()方法將指定的字符串模式輸入到警告框中。

基于Windows的警報彈出窗口。

處理基于windows的彈出窗口總是有點棘手,因為我們知道Selenium是一個自動化測試工具,它只支持Web應(yīng)用程序測試,也就是說,它不支持基于Windows的應(yīng)用程序,窗口警報就是其中之一。

  1. Robot class是基于Java的實用程序,它模擬鍵盤和鼠標(biāo)操作,并可以有效地用于處理基于windows的彈出與鍵盤事件的幫助。

  2. KeyPress和KkeyRelease方法可以分別模擬用戶按下和釋放鍵盤上某個鍵的操作。

問題23:如何使用Selenium WebDriver截圖?

問題24:如何在WebDriver/如何管理HTTPS中的安全連接錯誤中解決Firefox中的SSL證書問題?

問題25:如何解決IE中的SSL認(rèn)證問題?

// 打開瀏覽器后添加下面的命令

driver.navigate().to(“javascript:document.getElementById(‘overridelink’).click()”);

問題26:Selenium WebDriver中的可用定位器是什么?

  1. ID,

  2. Name,名稱

  3. CSS,

  4. XPath,

  5. Class name,

  6. TagName,

  7. LinkText, 鏈接文本

  8. Partial Link Text.部分鏈接文本

問題27:如何處理WebDriver中的AJAX控件?

AJAX代表異步JavaScript和XML。它不依賴于創(chuàng)建有效的XML所需的打開和關(guān)閉標(biāo)簽的額外開銷。大部分時間WebDriver自動處理Ajax控件和調(diào)用。如果不能處理的話,可以按照下面的方式來處理。

//Waiting for Ajax Control

WebElement AjaxElement = (new WebDriverWait(driver,

10)).until(ExpectedConditions.presenceOfElementLocated(By.("")));

問題28:如何在標(biāo)題菜單的子菜單項上執(zhí)行鼠標(biāo)移動操作?

應(yīng)該首先移動菜單標(biāo)題,然后移至彈出菜單項并單擊它。不要忘記在最后調(diào)用actions.perform() 。以下是一些示例Java代碼:


 

Part3. 一般框架面試問題和答案

 

問題29:大致分類和比較TDD/BDD和DDD框架?

你可能聽說過所有的這些縮寫詞。在這里會簡要地解釋它們,以及它們在系統(tǒng)測試生命周期中如何發(fā)揮作用的。

TDD - 測試驅(qū)動開發(fā)。

也被稱為測試驅(qū)動設(shè)計,是一個軟件開發(fā)的方法,在源代碼上重復(fù)進行單元測試。寫測試、看它失敗、然后重構(gòu)。這個概念是,先編寫測試,然后來檢查我們寫的代碼是否正常工作。每次測試后,重構(gòu)完成,然后再次執(zhí)行相同或類似的測試。該過程需要重復(fù)多次,直到每個單元在功能上按預(yù)期工作。TDD是由XP引入的。

BDD - 行為驅(qū)動開發(fā)。

行為驅(qū)動的開發(fā)將TDD的一般技術(shù)和原理與領(lǐng)域驅(qū)動設(shè)計的思想相結(jié)合。其目的是幫助人們設(shè)計系統(tǒng)(即開發(fā)人員)確定合適的測試來編寫測試 - 即反映利益相關(guān)者所期望行為的測試。

DDD域驅(qū)動的開發(fā)。

DDD將業(yè)務(wù)領(lǐng)域概念映射到軟件工件中。DDD框架提供以下好處:

  • 幫助團隊在業(yè)務(wù)和IT利益相關(guān)者之間建立一個共同的模型

  • 該模型是模塊化的,可擴展的,易于維護,該設(shè)計反映了一種商業(yè)模式。

  • 它提高了業(yè)務(wù)領(lǐng)域?qū)ο蟮目芍赜眯院涂蓽y試性。

問題30:什么是數(shù)據(jù)驅(qū)動框架?它與關(guān)鍵字驅(qū)動框架有什么不同?

數(shù)據(jù)驅(qū)動框架。

在這個框架中,測試用例邏輯駐留在測試腳本中。測試數(shù)據(jù)被分離并保存在測試腳本之外。測試數(shù)據(jù)是從外部文件(Excel文件)中讀取的,并被加載到測試腳本中的變量中。變量用于輸入值和驗證值。

關(guān)鍵字驅(qū)動。

關(guān)鍵字/表驅(qū)動框架需要開發(fā)數(shù)據(jù)表和關(guān)鍵字。它們獨立于執(zhí)行它們的測試自動化工具。可以使用或不使用應(yīng)用程序來設(shè)計測試。在關(guān)鍵字驅(qū)動的測試中,被測試的應(yīng)用程序的功能記錄在一個表格中,以及每個測試的分步說明。

問題31:解釋使用TestNG而不是JUnit框架的好處?

TestNG相較于Junit的優(yōu)勢:

  1. 在JUnit中,我們必須聲明@BeforeClass和@AfterClass,這是JUnit中的一個約束,而在TestNG中沒有像這樣的約束。

  2. TestNG提供了更多的setUp / tearDown級別。1.@ Before/AfterSuite 2.@Before/AfterTest 3.@Before/AfterGroup

  3. TestNG中不需要擴展任何類。

  4. TestNG中沒有方法名稱約束,就像JUnit一樣。

  5. 在TestNG中,我們可以告訴測試一個方法依賴于另一個方法,而在JUnit中這是不可能的。

  6. 測試用例的分組在TestNG中可用,而JUnit中則不可用。執(zhí)行可以基于組完成。例如,如果你已經(jīng)定義了許多案例,并通過將2個組分別定義為“離職“與”回歸”隔離。如果你只是想執(zhí)行“理智”的情況,那就告訴TestNG執(zhí)行“理智”。TestNG將自動執(zhí)行屬于“離職”組的案例。

  7. 另外,TestNG支持并行測試用例執(zhí)行。

問題32:與@Test注釋相關(guān)的TestNG參數(shù)的目的是什么?

在TestNG中,參數(shù)是修改注釋功能的關(guān)鍵字。

問題33:可以使用TestNG運行一組測試用例嗎?

是的,TestNG框架支持在測試組的幫助下執(zhí)行多個測試用例。

它提供了以下選項來運行特定組中的測試用例。

如果想基于回歸測試或冒煙測試等其中一個組來執(zhí)行測試用例,那么:

@Test(groups = {“regression-tests”, “smoke-tests”})

問題34:WebDriver哪個實現(xiàn)是最快的,為什么?

WebDriver的最快的實現(xiàn)是 HTMLUnitDriver。

原因是HTMLUnitDriver不會在瀏覽器中執(zhí)行測試。相反,它使用簡單的HTTP請求 - 響應(yīng)機制來運行測試用例。

這種方法比需要啟動瀏覽器來測試執(zhí)行的方式要快得多。

問題35:是否可以在Selenium 2.0中使用Selenium RC API?

是的,可以用Selenium 2.0來模擬Selenium 1.0 API(即RC)。但并不是所有的Selenium 1.0方法都支持。

為了達到這個目的,需要從WebDriver獲取Selenium實例并使用Selenium方法。

在Selenium 2.0中模擬Selenium 1.0時,方法執(zhí)行速度也可能會變慢。

問題36:可以在Java,Dot Net或Ruby中使用Selenium Grid嗎?

  • 使用Java,可以利用TestNG的并行測試功能來驅(qū)動Selenium Grid測試。

  • 使用.Net,可以使用“Gallio”并行執(zhí)行測試。

  • 使用Ruby,可以使用“DeepTest”來分發(fā)測試。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    神马午夜福利一区二区| 激情内射亚洲一区二区三区| 日本淫片一区二区三区| 九九热在线视频观看最新| 日韩欧美一区二区久久婷婷| 日韩一本不卡在线观看| 欧美日韩免费黄片观看| 91人妻人人做人碰人人九色| 国产成人av在线免播放观看av| 亚洲午夜精品视频观看| 国产不卡视频一区在线| 亚洲国产成人精品福利| 色播五月激情五月婷婷| 在线中文字幕亚洲欧美一区 | 我想看亚洲一级黄色录像| 精品日韩av一区二区三区| 一区二区三区欧美高清| 国产一级特黄在线观看| 青青免费操手机在线视频| 国产一区二区三区草莓av| 日本欧美三级中文字幕| 日韩精品少妇人妻一区二区| 日本不卡视频在线观看| 成年男女午夜久久久精品| 亚洲精品一区二区三区日韩| 国产精品成人一区二区三区夜夜夜| 欧美一级黄片欧美精品| 欧美黑人巨大一区二区三区| 福利专区 久久精品午夜| 亚洲国产成人爱av在线播放下载| 国产乱人伦精品一区二区三区四区| 最近最新中文字幕免费| 一区二区三区免费公开| 精品一区二区三区乱码中文| 麻豆亚州无矿码专区视频| 一区二区三区免费公开| 欧美日韩国产精品第五页| 伊人欧美一区二区三区| 这里只有九九热精品视频| 日韩人妻精品免费一区二区三区 | 日本加勒比系列在线播放|