精心整理總結(jié)的Python自動(dòng)化測(cè)試面試題
1、自動(dòng)化代碼中,用到了哪些設(shè)計(jì)模式?
- 單例設(shè)計(jì)模式
- 工廠模式
- PO設(shè)計(jì)模式
- 數(shù)據(jù)驅(qū)動(dòng)模式
- 面向接口編程設(shè)計(jì)模式
2、什么是斷言( Assert) ?
- 斷言Assert用于在代碼中驗(yàn)證實(shí)際結(jié)果是不是符合預(yù)期結(jié)果,
- 如果測(cè)試用例執(zhí)行失敗會(huì)拋出異常并提供斷言日志
3、什么是web自動(dòng)化測(cè)試
- Web自動(dòng)化測(cè)試是從UI (用戶界面)層面進(jìn)行的自動(dòng)化測(cè)試,
- 測(cè)試人員通過編程自動(dòng)化程序(測(cè)試用例腳本)來打開瀏覽器測(cè)試網(wǎng)站的業(yè)務(wù)邏輯。
4、什么是Selenium?
Selenium是一個(gè)開源的web自動(dòng)化測(cè)試框架,支持多種編程語言開發(fā)自動(dòng)化測(cè)試腳本,支持跨瀏覽器平臺(tái)進(jìn)行測(cè)試
5、寫出Selenium中你最熟悉的接口或類
WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、 By
6、元素定位類型有哪些?
By類一共有8種元素定位方式,它們都是靜態(tài)方法:
- By.id():
- By.name():
- By.tagName():
- By.className():
- By.cssSelector():
- By linkText():
- By partialLinkText():
- By.xpath():
7、Xpath是什么?
- 它是查找web頁面元素的一種方式,相當(dāng)于元素在dom中間的一個(gè)路徑,可以采用絕對(duì)路徑和相對(duì)路徑的方式進(jìn)行定位
- 它對(duì)于定義動(dòng)態(tài)的頁面元素有很大的幫助,同時(shí)也需要謹(jǐn)慎使用,因?yàn)槿绻撁娼Y(jié)構(gòu)發(fā)生變化,那么定位信息也可能需要變化。
8、findElement()和findElements(方法有什么區(qū)別
- 兩個(gè)都是查找頁面元素的方法
- findElement():查找一個(gè)頁面元素,只會(huì)返回一個(gè)WebElement對(duì)象
- findElements() :查找頁面上所有符合匹配的元素,返回元素集合
9、登錄按鈕除了用click方法進(jìn)行點(diǎn)擊以外還有其他方式嗎?
- 還可以使用submit()方法,前提是input元素的type為submit
10、怎么提高Selenium腳本的執(zhí)行速度
- 優(yōu)化等待時(shí)間:使用 WebDriverWait 智能等待來代替線程等待 sleep 和 隱式等待 implicityWait
- 減少不必要的操作:如直接進(jìn)入某頁面代替經(jīng)過一系列自動(dòng)化操作進(jìn)入某頁面在服務(wù)器允許的情況下,使用多線程實(shí)現(xiàn)并發(fā)執(zhí)行測(cè)試用例.
11、怎么對(duì)含有驗(yàn)證碼的功能進(jìn)行自動(dòng)化測(cè)試的
- 1) :圖像識(shí)別,技術(shù)難度大,效果不佳,不推薦
- 2) :屏蔽驗(yàn)證碼,邀請(qǐng)開發(fā)處理,但在預(yù)生產(chǎn)環(huán)境或者生產(chǎn)環(huán)境不推薦
- 3) :萬能驗(yàn)證碼,使用一個(gè)復(fù)雜的其他人無法猜到的驗(yàn)證碼
12、怎么驗(yàn)證復(fù)選按鈕是不是被選中
可以使用元素的 isSelected() 方法,如果返回的是 true 則說明被選中,否則表明未被選中
13、如何處理alert彈窗?
- 處理 alert 彈窗首先需要先跳轉(zhuǎn)到 alert 上,然后在點(diǎn)擊確定或者取消按鈕,
- Alert alert = driver.switchTo().alert(); //切換到alert
- alert.accept0; //確定
- alert.dismiss0; //取消
14、下拉菜單中如何去選擇一個(gè)菜單項(xiàng)?
- 如果下拉菜單是select標(biāo)簽,使用方法: selectByValue() 或者 selectByIndex() 或者 selectByVisibleText() 即可
- 如果這個(gè)下拉菜單不是通過 select 標(biāo)簽創(chuàng)建,則直接通過 xpath 定位元素然后去點(diǎn)擊選擇
15、如何模擬瀏覽器的前進(jìn)和后退、刷新操作
- driver.navigate().back()://后退
- driver. navigate().forward()://前進(jìn)
- driver.navigate0.efresh()://刷新
16、怎么獲得當(dāng)前頁面的URL?
String url = driver.getCurrentUrl();
17、WebDriver的close()和quit(方法的區(qū)別是什么?
- close()方法只是關(guān)閉當(dāng)前正在操作的窗口
- quit()是關(guān)閉了所有已經(jīng)打開的窗口
18、你覺得自動(dòng)化測(cè)試用哪些缺陷
- 成本比較大,而成效可能并不高
- 適合自動(dòng)化測(cè)試的功能有限
- 某些功能操作相對(duì)復(fù)雜,比如驗(yàn)證碼
- 維護(hù)成本高,一旦項(xiàng)目需求變更,自動(dòng)化測(cè)試腳本和用例就需要改進(jìn)
19、Web端功能自動(dòng)化,如何實(shí)現(xiàn)(非input型上傳)上傳文件
- 與windows窗口進(jìn)行交互,可以使用 pywin32庫 實(shí)現(xiàn)。
20、遇到 d1 class="inf-bar clearfix" 這種class中間有空格的控件,如何通過class定位?
- xpath定位:直接//d1 [@class="inf_bar clearfx"]
- css定位: d1.inf_bar.clearfix
21、Selenium自動(dòng)化,遇到 iframe 如何處理?
使用switch_ to.frame 切換進(jìn) iframe 當(dāng)中后 ,再去定位其中的元素并操作
22、Web端功能自動(dòng)化中,如何切換句柄。
先獲取所有窗口句柄,然后使用 switch_ to.window() 切換到指定窗口
23、測(cè)試中遇到 readonly 屬性的控件,需要如何處理?
簡述一下思路 先修改關(guān)閉r eadonly 屬性,然后再操作元素。
需求:給定一個(gè)只包含正整數(shù)且非空的數(shù)組,返回該數(shù)組中重復(fù)次數(shù)最多的前N個(gè)數(shù)字(返回結(jié)果按重復(fù)次數(shù)從多到少降序), 請(qǐng)用熟悉的語言實(shí)現(xiàn)該需求。10分鐘內(nèi)寫出來
a = [1, 6, 7, 4, 4, 5, 4, 5, 4, 5, 5, 6, 7, 8, 5, 6, 7, 3, 4, 2, 2, 1, 4, 8, 9, 4, 5, 6]
def get_datas(a):
result = []
data_dict = {}
# 鍵值對(duì):鍵:數(shù)字,值:在列表中的次數(shù)
for item in set(a):
data_dict[str(item)] = a.count(item)
print(data_dict)
# 將鍵值對(duì)按值(數(shù)字出現(xiàn)的次數(shù))排序 ---從高到低排序
res = sorted(data_dict.values(),reverse=True)
for num in res:
for key,value in data_dict.items():
# 如果值在列表中不存在,則添加到結(jié)果列表中
if num == value and key not in result:
result.append(key)
return result
a1 = get_datas(a執(zhí)行結(jié)果:

24、例如: passwd={"admin'":"123321","user1":" 123456"} 滿足一下條件?
1、設(shè)計(jì)一個(gè)登陸程序,不同的用戶名和對(duì)應(yīng)密碼存在一一個(gè)字典里面,輸入正確的用戶和密碼去登陸,
2、首先輸入用戶名,如果用戶名不存在或者為空,則一直提示輸入正確的用戶名
3、 當(dāng)用戶名正確的時(shí)候,提示去輸入密碼,如果密碼跟用戶名不對(duì)應(yīng),則提示密碼錯(cuò)誤請(qǐng)重新輸入。
4、如果密碼輸入錯(cuò)誤超過三次,中斷程序運(yùn)行。
5、當(dāng)輸入密碼錯(cuò)誤時(shí),提示還有幾次機(jī)會(huì)
6、用戶名和密碼都輸入成功的時(shí)候, 提示登陸成功!
users = {"admin": "123456", "user1": " 123456"}
count = 0
def login():
global count
username = input("請(qǐng)輸入用戶名:")
if username == None or username == "":
login()
if username not in users.keys():
print("用戶名輸入不正確,請(qǐng)重新輸入用戶名:")
login()
while (count < 3):
passwd = input("請(qǐng)輸入密碼:")
if passwd == users[username]:
print("登錄成功?。?)
count = 3
else:
count += 1
print("密碼輸入錯(cuò)誤,您還有{0}次機(jī)會(huì)。".format(3 - count))
login()總結(jié)
到此這篇關(guān)于Python自動(dòng)化測(cè)試面試題的文章就介紹到這了,更多相關(guān)Python自動(dòng)化測(cè)試面試題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)代理服務(wù)功能實(shí)例
本文分析了代理服務(wù)的原理,并使用PYTHON實(shí)現(xiàn)了一個(gè)簡單的代理服務(wù)功能供大家參考使用2013-11-11
Python設(shè)計(jì)模式結(jié)構(gòu)型享元模式
這篇文章主要介紹了Python享元模式,享元模式即Flyweight Pattern,指運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象,下面和小編一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧2022-02-02
TensorFlow的reshape操作 tf.reshape的實(shí)現(xiàn)
這篇文章主要介紹了TensorFlow的reshape操作 tf.reshape的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
pyspark操作hive分區(qū)表及.gz.parquet和part-00000文件壓縮問題
這篇文章主要介紹了pyspark操作hive分區(qū)表及.gz.parquet和part-00000文件壓縮問題,針對(duì)問題整理了spark操作hive表的幾種方式,需要的朋友可以參考下2021-08-08
Django與數(shù)據(jù)庫交互的實(shí)現(xiàn)
最近在學(xué)習(xí)Django,本文主要介紹了Django與數(shù)據(jù)庫交互的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow)
這篇文章主要介紹了pycharm下配置pyqt5的教程(anaconda虛擬環(huán)境下+tensorflow),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03
Django實(shí)現(xiàn)登錄隨機(jī)驗(yàn)證碼的示例代碼
登錄驗(yàn)證碼是每個(gè)網(wǎng)站登錄時(shí)的基本標(biāo)配,這篇文章主要介紹了Django實(shí)現(xiàn)登錄隨機(jī)驗(yàn)證碼的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
用Python實(shí)現(xiàn)職工信息管理系統(tǒng)
這篇文章主要介紹了用Python實(shí)現(xiàn)職工信息管理系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python模塊學(xué)習(xí) datetime介紹
Python提供了多個(gè)內(nèi)置模塊用于操作日期時(shí)間,像calendar,time,datetime。time模塊我在之前的文章已經(jīng)有所介紹,它提供的接口與C標(biāo)準(zhǔn)庫time.h基本一致2012-08-08

