久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>selenium自動化測試代碼結構(2022非常全的selenium面試題及答案)

selenium自動化測試代碼結構(2022非常全的selenium面試題及答案)

發布時間:2024-01-24閱讀(15)

導讀一、前言Selenium,是一個開源的框架,主要用于做HTML頁面的UI自動化測試。不過,seleniumIDE在去年官方已宣告放棄維護了。官網上放著一句話....一、前言

Selenium,是一個開源的框架,主要用于做HTML頁面的UI自動化測試。不過,selenium IDE在去年官方已宣告放棄維護了。官網上放著一句話,selenium IDE is Dead。Selenium IDE是火狐瀏覽器的一個插件,是Selenium的一個可視化編輯界面,支持直接錄制腳本,然后轉成其它的語言的腳本執行。不過,錄制的腳本,里面有很多的廢代碼,一般我都不用錄制的,都是直接寫腳本的,所以對我的影響,并不大。

二、2022非常全的selenium面試題及參考答案

1 什么是Selenium?

Selenium就是一套專門用于自動化Web瀏覽器的工具。 而已! 你用這個東西來做什么完全取決于你。 主要是用于自動化Web應用程序進行測試,但肯定不僅限于此。 無聊的基于Web的管理任務也可以(也應該!)也是自動化的。Selenium有一些最大的瀏覽器供應商的支持,他們已經采取(或正在采取)步驟使Selenium成為其瀏覽器的本地部分。 它也是無數其他瀏覽器自動化工具,API和框架的核心技術。最新的Selenium版本已經是3.0(2016年10月13日正式release),但是因為是新技術,Selenium3.0的使用范圍還不太廣泛。變動的范圍也不是很大,主要是更傾向于Webdriver,而更多的摒棄了RC。

2 什么是Selenium Webdriver

Webdriver (Selenium2)是一種用于Web應用程序的自動測試工具,它提供了一套友好的API,與Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可讀性和可維護性也大大提高。Webdriver完全就是一套類庫,不依賴于任何測試框架,除了必要的瀏覽器驅動,不需要啟動其他進程或安裝其他程序,也不必像Selenium 1那樣需要先啟動服務。另外,二者所采用的技術方案也不同。Selenium 1是在瀏覽器中運行 JavaScript來進行測試,而Selenium 2則是通過原生瀏覽器支持或者瀏覽器擴展直接控制瀏覽器。Selenium 2針對各個瀏覽器而開發的,它取代了嵌入到被測Web應用中的 JavaScript。與瀏覽器的緊密集成,支持創建更高級的測試,避免了JavaScript安全模型的限制。除了來自瀏覽器廠商的支持,Selenium 2 還利用操作系統級的調用模擬用戶輸入。

3 S什么是elenium IDE?

Selenium IDE是Selenium腳本的集成開發環境。 它被實現為Firefox擴展(插件),并允許您記錄,編輯和調試測試。

4 常用自動化測試工具機器運行原理,寫出一段元素查找的代碼?

webdriver 原理:

l 每個Selenium 命令,這里指的是所謂的基礎操作,例如,點擊、輸入等,都會創建一條 HTTP 請求, 發送給 Browser WebDriver

l Browser WebDriver 使用一個HTTP Server 監聽和接收HTTP 請求

l HTTP Server 根據協議規則定義這些 Selenium 命令對應的瀏覽器具體操作

l 瀏覽器執行這些操作

l 瀏覽器將執行狀態返回給HTTP Server

l HTTP Server 再將這些狀態信息返回給自動化腳本

5 如何開展自動化測試框架的構建?

我們公司的自動化測試框架主要是有頁面庫,數據驅動,測試腳本,測試報告,持續集成這幾個部分組成的。

頁面對象庫對自動化包括工具(selenium,appium)API 的二次封裝,還有使用二次封裝后的自動化工具類實現的頁面元素封裝(Page Object)然后會給封裝好的頁面設置一個統一入口類。這些之中會有一個頁面元素文件專門存放元素的定位方法。

數據驅動部分主要是測試腳本中使用的數據文件(excel,yaml,txt)以及讀取方法類,如果數據涉及到數據庫,也會把對應的數據讀取方法封裝到這個部分。

測試腳本主要是通過 pytest 測試框架進行編寫的,選擇其的原因主要有其支持 assert 語句斷言,適合復雜的功能測試,執行過程中可以自定義用例執行順序和跳過以及預期,支持重復執行,還可兼容 unittest 編寫的測試用例,最重要的是支持參數化和方便持續集成工具集成。

測試報告主要是通過 pytest 自動生成的Allure 報告,其可讀性可生動的數據表圖比 pytest 報告更能反應測試結果,也可以集成與 Jenkins 中。

持續集成方面主要是通過 Jenkins 進行實現的,目的在于測試腳本的無人值守執行以及自動生成測試報告,方便測試人員能夠省出時間進行更多的功能測試和探索性測試。(通過設置幾個 git,gitlab,mailer,allure, 等功能插件,配置 Allure 報告,默認郵件發送設置。用例腳本主要存放在 gitlab 用例庫中,設置好輪詢策略之后,配置報告發送的目標郵箱,就可以實現持續集成實踐中的測試環節)

6 如何設計自動化測試用例:

l編寫測試腳本之前要編寫測試用例,而且測試用例不能直接使用手工測試的用例。

l自動化的測試用例是一個完整的場景。用戶登錄系統到用戶退出。

l用例之驗證一個功能點。不用試圖登陸后驗證所有的功能在退出

l測試用例盡量只做正向的邏輯驗證。

l用例之間不要產生關聯,相互獨立,也要高內聚,低耦合

l測試用例關注的是功能邏輯的實現,字段無關

l測試用例的上下文必須有一定的順序性,前置條件清晰

l檢查點的設置要側重,全面,靈活

l測試用例對數據的操作要進行還原

l測試用例必須是可回歸的

l用例選擇遵循成本始終,構建場景,目的冒煙回歸,繁瑣功能,主體流程

l用例轉型遵循前置配置,拋異常,步驟驗證,高內聚,關門歸原

7 webdriver 如何開啟和退出一個瀏覽器?

開啟:dr = webdriver.瀏覽器類型() 關閉:dr.quit()

8 什么是自動化測試框架? 測試自動化框架是設置特定產品的自動化規則的集成系統。該系統集成了功能庫,測試數據源,對象詳細信息和各種可重復使用的模塊。這些組件用作需要組裝以代表業務流程的小型構建塊。該框架為測試自動化提供了基礎,并簡化了自動化工作。 也是為自動化軟件測試提供支持的假設框架,概念和工具的主要優點是維護成本低。如果任何測試用例發生變化,那么只需要更新測試用例文件,驅動程序腳本和啟動腳本將保持不變。理想情況下,如果應用程序發生更改,則無需更新腳本。 選擇正確的框架/腳本技術有助于降低成本。與測試腳本相關的成本是由于開發和維護工作。測試自動化期間使用的腳本的方法對成本有影響。通常使用各種框架/腳本技術:線性(程序代碼,可能由使用記錄和播放的工具生成)結構化(使用控制結構 - 通常是“if-else”,“switch”,“for”,“while”條件/語句)

數據驅動(數據存儲在數據庫,電子表格或其他機制中,比如xml) 關鍵字驅動 行為驅動 混合(使用上述兩種或更多種模式)自動化測試框架主要負責: 定義表達期望的格式 創建一個掛鉤或驅動被測應用程序的機制 執行測試 報告結果

9 Selenium是什么,流行的版本有哪些?

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

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

Selenium 1.0或Selenium RC,于2004年初發布,提供了一個使用服務器與瀏覽器交換命令和響應的API集。

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

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

10 你如何從命令行啟動Selenium RC?

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

java -jar selenium-server.jar

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

java -jar selenium-server.jar -htmlSuite

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

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

Java -jar selenium-server.jar -port 5555

12 什么是Selenium Server,它與Selenium Hub有什么不同?

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

13 你如何從Selenium連接到數據庫?

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

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

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

創建用于執行SQL語句的Statement,PreparedStatement和CallableStatement對象。

可以幫助我們提交或回滾一個JDBC事務。

如果你想知道連接到的數據庫或數據源信息,Connection對象通過使用DatabaseMetaData就可以收集有關數據庫或數據源的信息。

可以幫助我們關閉數據源。Connection.isClosed() 方法只有在調用了Connection.close()時才返回true 。此方法用于關閉所有連接。

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

語法:

String url = "jdbc: odbc: makeConnection";

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

14 你如何驗證多個頁面上存在的一個對象?

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

assertTrue(selenium.isElementPresent(locator));

15 XPath中使用單斜杠和雙斜杠有什么區別?

如果XPath是從文檔節點開始,它將允許創建“絕對”路徑表達式。

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

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

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

16 如何編寫Selenium IDE / RC的用戶擴展?

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

因為Selenium的核心是用JavaScript開發的,所以要符合原語言的標準規則來創建擴展。要創建一個擴展,我們必須用下面的設計格式來編寫函數。

// 樣例

Selenium.prototype.doFunctionName = function(){

}

函數名稱前面的“do”告訴Selenium這個函數可以被調用為一個步驟命令,而不是作為內部函數或私有函數被調用。

17 如何在頁面加載成功后驗證元素的存在?

它可以通過下面的代碼行來實現。

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

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);}}

18 你對Selenium Grid有什么了解?它提供了什么功能?

Selenium Grid是一款利用現有計算基礎架構大幅加速Web應用程序功能測試的工具。允許測試者輕松地在多臺機器上并行運行多個測試,并且可以在異構環境中運行。

基于優秀的Selenium Web測試工具,Selenium Grid允許測試者并行運行多個Selenium Remote Control實例。更好的是,它集成顯示所有Selenium遠程控制,所以不必擔心實際的基礎設施。Selenium Grid將運行Selenium測試套件所需的時間,縮短到Selenium實例的單個實例運行時間的一小點。

19 如何從你的Java Class啟動Selenium服務器?

try {seleniumServer = new SeleniumServer();seleniumServer.start();} catch (Exception e) {e.printStackTrace();}

20 Selenium中有哪些驗證點?

Selenium主要有三種驗證點:

檢查頁面標題

檢查某些文字

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

§

21 什么是XPath?什么時候應該在Selenium中使用XPath?

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

絕對路徑用 - / 單斜杠

相對路徑用 - // 雙斜杠

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

//input[@name=’q’]

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

//input[@class=’ lst’]

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

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

22 什么是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’)]

使用內部文本的元素位置策略:

css = a:contains(‘log out’)

23 當有很多定位器時,如ID、名稱、XPath、CSS定位器,我應該使用哪一個?

如果有唯一的名稱或標識符可用,那么應該使用它們來代替XPath和CSS定位器。如果沒有,那么CSS定位器應該被優先考慮,因為在大多數現代瀏覽器中,它們的評估速度比XPath更快。

24 在Selenium中處理多個彈出窗口的機制是什么?

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

然后將所有窗口名稱存儲到Set變量中并將其轉換為數組。

接下來,通過使用數組索引,導航到特定的窗口。

driver.switchTo().window(ArrayIndex);

25 你如何處理使用Selenium的Ajax控件?

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

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

26 Selenium Webdriver優于Selenium RC的優點是什么?

Selenium RC的架構相當復雜,WebDriver的架構比Selenium RC簡單些。

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

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

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

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

Selenium RC內置了測試結果生成器,并自動生成測試結果的HTML文件。Web驅動程序沒有自動生成測試結果文件的內置命令。

§

27 “GET”和“NAVIGATE”方法的主要區別是什么?

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

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

這可以通過調用< navigate()>方法來實現。

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

28 隱式等待與顯式等待有什么不同?

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

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

29 你將如何處理Selenium WebDriver中的警報/彈出窗口?

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

基于Windows的警報彈出窗口

基于Web的警報彈出窗口

基于Web的警報彈出窗口。

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

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

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

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

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

基于Windows的警報彈出窗口。

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

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

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

30 如何解決IE中的SSL認證問題?

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

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

31 Selenium WebDriver中的可用定位器是什么?

ID,

Name,名稱

CSS,

XPath,

Class name,

TagName,

LinkText, 鏈接文本

Partial Link Text.部分鏈接文本

32 如何處理WebDriver中的AJAX控件?

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

//Waiting for Ajax Control

WebElement AjaxElement = (new WebDriverWait(driver,

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

總結:希望此文對你有幫助,如果你正在面試或者在準備面試的小伙伴,我這里有份軟件測試的面試寶典,一共有800道面試題包含了十九個模塊: 軟件測試,liunx,自動化測試,Python基礎,APP測試,接口測試,selenium,性能測試,安全測試,邏輯題,HR面試題,如果你有需要的話,我可以給你!

資料獲取方式:轉發 關注后私信【軟件測試】

selenium自動化測試代碼結構(2022非常全的selenium面試題及答案)(1)

TAGS標簽:  selenium  自動化  測試  代碼  結構  selenium自動

歡迎分享轉載→http://www.avcorse.com/read-242744.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖