溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

python自動(dòng)化測(cè)試面試題與答案有哪些

發(fā)布時(shí)間:2023-03-17 10:49:20 來(lái)源:億速云 閱讀:97 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“python自動(dòng)化測(cè)試面試題與答案有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“python自動(dòng)化測(cè)試面試題與答案有哪些”吧!

1、什么項(xiàng)目適合做自動(dòng)化測(cè)試?

關(guān)鍵字:不變的、重復(fù)的、規(guī)范的

1)任務(wù)測(cè)試明確,需求不會(huì)頻繁變動(dòng)

2)項(xiàng)目周期要足夠長(zhǎng)

3)自動(dòng)化測(cè)試腳本可重復(fù)使用,比如:比較頻繁的回歸測(cè)試

4)被測(cè)軟件系統(tǒng)開(kāi)發(fā)比較規(guī)范,能夠保證系統(tǒng)的可測(cè)試性

5)軟件系統(tǒng)界面穩(wěn)定,變動(dòng)少

6)項(xiàng)目進(jìn)度壓力不太大

2、什么是 PO 模式?

是指把一個(gè)具體的頁(yè)面轉(zhuǎn)化為編程語(yǔ)言當(dāng)中的一個(gè)對(duì)象,頁(yè)面特性轉(zhuǎn)化成對(duì)象屬性,頁(yè)面操作轉(zhuǎn)化為對(duì)象方法。

1)通俗來(lái)講把每個(gè)頁(yè)面當(dāng)成一個(gè)對(duì)象,頁(yè)面層寫(xiě)定位元素方法和頁(yè)面操作方法

2)用例層從頁(yè)面層調(diào)用操作方法,寫(xiě)成用例

3)可以做到定位元素與腳本的分離

4)主要用來(lái)實(shí)現(xiàn)對(duì)頁(yè)面操作和測(cè)試邏輯的一個(gè)分離

3、PO 模式的封裝原則有哪些?

1)要封裝頁(yè)面中的功能或服務(wù),比如點(diǎn)擊頁(yè)面元素,可以進(jìn)入到新的頁(yè)面,則可為這個(gè)服務(wù)封裝方法"進(jìn)入新頁(yè)面"

2)封裝細(xì)節(jié),對(duì)外只提供方法名或者接口,盡量不要暴露頁(yè)面的內(nèi)部

3)封裝的操作細(xì)節(jié)中不要使用斷言,把斷言放到單獨(dú)的模塊中,

4)點(diǎn)擊一個(gè)按鈕會(huì)開(kāi)啟新的頁(yè)面,可以用return方法跳轉(zhuǎn),比如return MainPage()表示跳轉(zhuǎn)到主頁(yè)

5)整個(gè) PO 你不需要封裝整個(gè)頁(yè)面的行為,用到什么邏輯就封裝什么

6)一個(gè)動(dòng)作可能產(chǎn)生不同結(jié)果,比如點(diǎn)擊按鈕后,可能成功,也可能失敗,為兩種結(jié)果封裝兩個(gè)方法:click_success和click_error

4、 Python 中 *args 和 **kwargs 的作用?

都是不定長(zhǎng)參數(shù),解決參數(shù)不固定問(wèn)題。

args是非關(guān)鍵字參數(shù),用于元組;kwargs是關(guān)鍵字參數(shù) (字典)

也就是說(shuō)args表示任何多個(gè)無(wú)名參數(shù),然而kwags表示一個(gè)有著對(duì)應(yīng)關(guān)系的關(guān)鍵字參數(shù)。

在使用的時(shí)候需要注意,*args要在**kwags之前,不然會(huì)發(fā)生語(yǔ)法錯(cuò)誤。

5、Python 中的垃圾回收機(jī)制是什么?

垃圾回收機(jī)制(Garbage Collection),簡(jiǎn)稱(chēng)GC,是Python解釋器自帶的機(jī)制,專(zhuān)門(mén)用來(lái)進(jìn)行垃圾回收。

在定義一個(gè)變量時(shí),會(huì)申請(qǐng)內(nèi)存空間,當(dāng)該變量使用完畢,也應(yīng)該釋放掉該變量所占用的內(nèi)存空間,Python則由GC機(jī)制進(jìn)行回收。

無(wú)論何種垃圾回收機(jī)制,一般都分為兩個(gè)階段:垃圾檢測(cè)和垃圾回收。

垃圾檢測(cè),就是區(qū)分已分配內(nèi)存中的“可回收”和“不可回收”內(nèi)存。

垃圾回收,則是使操作系統(tǒng)重新掌握垃圾檢測(cè)階段所標(biāo)識(shí)出來(lái)的可回收內(nèi)存塊。

所謂垃圾回收,并不是直接把這塊內(nèi)存的數(shù)據(jù)直接清空了,而是將使用權(quán)重新交給了操作系統(tǒng),不會(huì)應(yīng)用程序霸占了。

什么是垃圾

1)當(dāng)一個(gè)變量調(diào)用完畢,且后續(xù)不再需要時(shí),便是垃圾。

2)當(dāng)指向該變量地址的變量名指向另一個(gè)地址時(shí),原變量?jī)?nèi)存地址無(wú)法被訪(fǎng)問(wèn),此時(shí)該變量也是垃圾。

6、selenium中隱藏元素如何定位?

首先selenium是無(wú)法操作隱藏元素的(但是能正常定位到),本身這個(gè)框架就是設(shè)計(jì)如此,如果非要去操作隱藏元素,那就用js的方法去操作,selenium提供了一個(gè)入口可以執(zhí)行js腳本。

python自動(dòng)化測(cè)試面試題與答案有哪些

元素的屬性隱藏和顯示,主要是 type="hidden"和style="display: none;"屬性來(lái)控制的。

7、關(guān)閉瀏覽器中quit和close的區(qū)別

簡(jiǎn)單來(lái)說(shuō),兩個(gè)都可以實(shí)現(xiàn)退出瀏覽器session功能。

close只會(huì)關(guān)閉瀏覽器,而quit關(guān)閉全部瀏覽器的同時(shí),也會(huì)殺掉驅(qū)動(dòng)進(jìn)程

8、舉例一下你遇到過(guò)那些異常

  • ElementNotSelectableException :元素不能選擇異常

  • ElementNotVisibleException :元素不可見(jiàn)異常

  • NoSuchAttributeException :沒(méi)有這樣屬性異常

  • NoSuchElementException:沒(méi)有該元素異常

  • NoSuchFrameException :沒(méi)有該frame異常

  • TimeoutException : 超時(shí)異常

  • Element not visible at this point :在當(dāng)前點(diǎn)元素不可見(jiàn)

9 、如何處理alert彈窗?

1)先用switch_to_alert()方法切換到alert彈出框上

2)可以用text方法獲取彈出的文本 信息

3)通過(guò)accept()點(diǎn)擊確認(rèn)按鈕

4)通過(guò)dismiss()點(diǎn)擊取消按鈕,取消彈出框

5)通過(guò)text()獲得彈出窗口的文本

10、在selenium中如何處理多窗口?

句柄:窗口的唯一標(biāo)識(shí)

1)先獲取當(dāng)前窗口的句柄driver.current_window_handle

2)再獲取所有的的窗口句柄driver.window_handle

3)循環(huán)判斷是否是想要操作的窗口,如果是就可以對(duì)窗口進(jìn)行操作;如果不是就使用driver.switch_to_window方法跳轉(zhuǎn)到新的窗口。

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

Selenium中沒(méi)有提供原生的方法判斷元素是否存在,一般我們可以通過(guò)定位元素+異常捕獲的方式判斷。

python自動(dòng)化測(cè)試面試題與答案有哪些

12、自動(dòng)化中有哪三類(lèi)等待?他們有什么特點(diǎn)?

1)線(xiàn)程等待(強(qiáng)制等待)如time.sleep(2):線(xiàn)程強(qiáng)制休眠2秒鐘,2秒過(guò)后,再執(zhí)行后續(xù)的代碼。建議少用。

2)imlicitlyWait(隱式等待)會(huì)在指定的時(shí)間范圍內(nèi)不斷的查找元素,直到找到元素或超時(shí),特點(diǎn)是必須等待整個(gè)頁(yè)面加載完成。

3)WebDriverWait(顯式等待)通常是我們自定義的一個(gè)函數(shù)代碼,這段代碼用來(lái)等待某個(gè)元素加載完成,再繼續(xù)執(zhí)行后續(xù)的代碼。

13、selenium中如何保證操作元素的成功率?也就是說(shuō)如何保證點(diǎn)擊的元素一定是可以點(diǎn)擊的?

1)使用WebDriverWait()顯性等待,等待元素加載出來(lái)后,再進(jìn)行元素操作。

2)盡量減少不必要的操作:可以直接訪(fǎng)問(wèn)頁(yè)面的,不要通過(guò)點(diǎn)擊操作訪(fǎng)問(wèn)

3)有些頁(yè)面加載時(shí)間過(guò)長(zhǎng),可以考慮中斷加載

4)開(kāi)發(fā)人員規(guī)范開(kāi)發(fā)習(xí)慣,如給頁(yè)面元素加上唯一的name、id等。

14、如何提高selenium腳本的執(zhí)行速度?

1)使用顯性等待,減少?gòu)?qiáng)制等待或隱性等待的使用。

2)減少不必要的操作步驟。

3)如果頁(yè)面加載的內(nèi)容過(guò)多,就設(shè)置超時(shí)時(shí)間,中斷頁(yè)面加載。

15、用例在運(yùn)行過(guò)程中經(jīng)常會(huì)出現(xiàn)不穩(wěn)定的情況,也就是說(shuō)這次可以通過(guò),下次就沒(méi)辦法通過(guò)了,如何去提升用例的穩(wěn)定性?

1)在經(jīng)常檢測(cè)失敗的元素前盡量加上顯式等待時(shí)間,等要操作的元素出現(xiàn)之后再執(zhí)行下面的操作。

2)多用 try 捕捉,處理異常

3)盡量使用測(cè)試專(zhuān)用環(huán)境,避免其他類(lèi)型的測(cè)試同時(shí)進(jìn)行,對(duì)數(shù)據(jù)造成干擾

16、你的自動(dòng)化用例的執(zhí)行策略是什么?

自動(dòng)化測(cè)試用例的執(zhí)行策略是要看自動(dòng)化測(cè)試的目的,通常有如下幾種策略:

1)自動(dòng)化測(cè)試用例是用來(lái)監(jiān)控的,在此目的下,可以把自動(dòng)化測(cè)試用例設(shè)置成定時(shí)執(zhí)行的,如果每五分鐘或一個(gè)小時(shí)執(zhí)行一次,在jenkins上創(chuàng)建一個(gè)定時(shí)任務(wù)即可。

2)必須回歸的用例。把測(cè)試用例設(shè)置成觸發(fā)式執(zhí)行,在jenkins上將自動(dòng)化測(cè)試任務(wù)綁定到開(kāi)發(fā)的build任務(wù)上。當(dāng)開(kāi)發(fā)人員在仿真環(huán)境上部代碼的時(shí)候,自動(dòng)化測(cè)試用例就會(huì)被觸發(fā)執(zhí)行。

3)不需要經(jīng)常執(zhí)行的測(cè)試用例。像全量測(cè)試用例,沒(méi)必要一直回歸執(zhí)行,有些非主要業(yè)務(wù)線(xiàn)也不需要時(shí)時(shí)回歸。這類(lèi)測(cè)試用例采用人工執(zhí)行,在jenkins創(chuàng)建一個(gè)任務(wù),需要執(zhí)行的時(shí)候人工去構(gòu)建即可。

17、什么是持續(xù)集成?

持續(xù)集成是一種軟件開(kāi)發(fā)實(shí)踐,即團(tuán)隊(duì)開(kāi)發(fā)成員經(jīng)常將代碼集成到主干,也就意味著每天可能會(huì)發(fā)生多次集成。

它的好處主要有兩個(gè):

1)快速發(fā)現(xiàn)錯(cuò)誤。每完成一點(diǎn)更新,就集成到主干,可以快速發(fā)現(xiàn)錯(cuò)誤,定位錯(cuò)誤也比較容易。

2)防止分支大幅偏離主干。如果不是經(jīng)常集成,主干又在不斷更新,會(huì)導(dǎo)致以后集成的難度變大,甚至難以集成。

目的:

持續(xù)集成的目的,就是讓產(chǎn)品可以快速迭代,同時(shí)還能保持高質(zhì)量。它的核心措施是,代碼集成到主干之前,必須通過(guò)自動(dòng)化測(cè)試。只要有一個(gè)測(cè)試用例失敗,就不能集成。

18、自動(dòng)化測(cè)試的時(shí)候是不是需要連接數(shù)據(jù)庫(kù)做數(shù)據(jù)校驗(yàn)?

接口測(cè)試需要,UI自動(dòng)化不需要

19、有幾種元素常用定位方式,分別是?你最偏愛(ài)哪一種,為什么?

8 種,分別是:id、name、class name、tag name、link text、partial link text、xpath、css

我最常用的是 xpath(或 CssSelector)

因?yàn)楹芏嗲闆r下,html 標(biāo)簽的屬性不夠規(guī)范,無(wú)法通過(guò)單一的屬性定位,這個(gè)時(shí)候就只能使用 xpath 可以去重實(shí)現(xiàn)定位唯一element

事實(shí)上定位最快的是Id,因?yàn)閕d是唯一的,然而大多數(shù)開(kāi)發(fā)并沒(méi)有設(shè)置id。

20、如何去定位頁(yè)面上動(dòng)態(tài)加載的元素?

屬性動(dòng)態(tài)變化是指該 element 沒(méi)有固定的屬性值,所以只能通過(guò)相對(duì)位置定位比如通過(guò) xpath 的軸,找到該元素的父節(jié)點(diǎn)或者子節(jié)點(diǎn)等方式

21、點(diǎn)擊鏈接以后,selenium是否會(huì)自動(dòng)等待該頁(yè)面加載完畢?

不會(huì)的。

所以有的時(shí)候,當(dāng)selenium并未加載完一個(gè)頁(yè)面時(shí),去請(qǐng)求頁(yè)面資源,則會(huì)誤報(bào)不存在此元素。
所以首先我們應(yīng)該考慮判斷,selenium是否加載完此頁(yè)面。其次再通過(guò)函數(shù)查找該元素。(使用顯示等待,等待頁(yè)面加載后再去操作元素)

22、webdriver client的原理是什么?

在selenium啟動(dòng)以后,driver充當(dāng)了服務(wù)器的角色,跟client和瀏覽器通信,client根據(jù)webdriver協(xié)議發(fā)送請(qǐng)求給driver。driver解析請(qǐng)求,并在瀏覽器上執(zhí)行相應(yīng)的操作,并把執(zhí)行結(jié)果返回給client。

23、webdriver的協(xié)議是什么?

The WebDriver Wire Protocol

24、啟動(dòng)瀏覽器的時(shí)候用到的是哪個(gè)webdriver協(xié)議?

http協(xié)議

25、怎樣去選擇一個(gè)下拉框中的value=xx的option?

1)select類(lèi)里面提供的方法:select_by_value(“xxx”)
2)xpath的語(yǔ)法也可以定位到

26、Python 中常見(jiàn)的可變參數(shù)類(lèi)型和不可變參數(shù)類(lèi)型,都有哪些?

不可變的數(shù)據(jù)類(lèi)型包括:整數(shù)、浮點(diǎn)數(shù)、負(fù)數(shù)、布爾值、字符串、元組

可變參數(shù)類(lèi)型包括:字典、列表、集合

27、如何在定位元素后高亮元素(以調(diào)試為目的)?

重置元素屬性,給定位的元素加背景、邊框

28、什么是斷言?

assert,判斷測(cè)試結(jié)果與期望結(jié)果是否一致

目的為了表示與驗(yàn)證軟件開(kāi)發(fā)者預(yù)期的結(jié)果——當(dāng)程序執(zhí)行到斷言的位置時(shí),對(duì)應(yīng)的斷言應(yīng)該為真。若斷言不為真時(shí),程序會(huì)中止執(zhí)行,并給出錯(cuò)誤信息。

29/自動(dòng)化測(cè)試過(guò)程中,你遇到了哪些問(wèn)題,是如何解決的?

1)頻繁地變更頁(yè)面,經(jīng)常要修改頁(yè)面對(duì)象類(lèi)里面的代碼

2)自動(dòng)化測(cè)試偶爾出現(xiàn)過(guò)誤報(bào)

3)自動(dòng)化測(cè)試結(jié)果出現(xiàn)覆蓋的情況:Jenkins根據(jù)時(shí)間建立文件夾

4)自動(dòng)化測(cè)試代碼維護(hù)比較麻煩

5)自動(dòng)化測(cè)試進(jìn)行數(shù)據(jù)庫(kù)對(duì)比數(shù)據(jù)

30、如何模擬瀏覽器的前進(jìn)、后退、刷新操作

  • driver. navigate().forward() //前進(jìn)

  • driver.navigate().back() //后退

  • driver.navigate0.efresh() //刷新

到此,相信大家對(duì)“python自動(dòng)化測(cè)試面試題與答案有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI