Selenium 自動(dòng)化測試面試題及答案

1斧拍、selenium中如何判斷元素是否存在酒奶?

- isElementPresent

2删咱、selenium中hidden或者是display = none的元素是否可以定位到屑埋?

- 不能

3、selenium中如何保證操作元素的成功率痰滋?也就是說如何保證我點(diǎn)擊的元素一定是可以點(diǎn)擊的摘能?

- 添加元素智能等待時(shí)間 driver.implicitly_wait(30)

- try 方式進(jìn)行 id,name,clas,x path, css selector 不同方式進(jìn)行定位,如果第一種失敗可以自動(dòng)嘗試第二種

-Selenium保證元素成功率是通過元素的定位即寡,當(dāng)然它的定位方法很多徊哑,一定能有合適的。但是在自動(dòng)化工程的實(shí)施過程中聪富,高質(zhì)量的自動(dòng)化測試不是只有測試人員保證的莺丑。需要開發(fā)人員規(guī)范開發(fā)習(xí)慣,如給頁面元素加上唯一的name,id等墩蔓,這樣就能大大地提高元素定位的準(zhǔn)確性梢莽。當(dāng)然如果開發(fā)人員開發(fā)不規(guī)范,我們在定位元素的時(shí)候盡量使用相對地址定位奸披,這樣能減少元素定位受頁面變化的影響昏名。只要我們元素定位準(zhǔn)確,就能保證我的每一個(gè)操作符合我的預(yù)期

4阵面、如何提高selenium腳本的執(zhí)行速度轻局?

- Selenium腳本的執(zhí)行速度受多方面因素的影響,如網(wǎng)速样刷,操作步驟的繁瑣程度仑扑,頁面加載的速度,以及我們在腳本中設(shè)置的等待時(shí)間置鼻,運(yùn)行腳本的線程數(shù)等镇饮。所以不能單方面追求運(yùn)行速度的,要確保穩(wěn)定性箕母,能穩(wěn)定地實(shí)現(xiàn)回歸測試才是關(guān)鍵储藐。

我們可以從以下幾個(gè)方面來提高速度:

一俱济,減少操作步驟,如經(jīng)過三四步才能打開我們要測試的頁面的話钙勃,我們就可以直接通過網(wǎng)址來打開蛛碌,減少不必要的操作。

二肺缕,中斷頁面加載左医,如果頁面加載的內(nèi)容過多,我們可以查看一下加載慢的原因同木,如果加載的內(nèi)容不影響我們測試浮梢,就設(shè)置超時(shí)時(shí)間,中斷頁面加載彤路。

三秕硝,在設(shè)置等待時(shí)間的時(shí)候,可以sleep固定的時(shí)間洲尊,也可以檢測某個(gè)元素出現(xiàn)后中斷等待也可以提高速度远豺。

四,配置testNG實(shí)現(xiàn)多線程坞嘀。在編寫測試用例的時(shí)候躯护,一定要實(shí)現(xiàn)松耦合,然后在服務(wù)器允許的情況下丽涩,盡量設(shè)置多線程運(yùn)行棺滞,提高執(zhí)行速度。

 5矢渊、用例在運(yùn)行過程中經(jīng)常會(huì)出現(xiàn)不穩(wěn)定的情況继准,也就是說這次可以通過,下次就沒辦法通過了矮男,如何去提升用例的穩(wěn)定性移必?

- time.sleep( )

- driver.implicitly_wait(30)

- 多用 try 捕捉,處理異常

-此時(shí)我們要分析出不穩(wěn)定的原因毡鉴,然后有針對性的去解決問題崔泵。主要有以下幾個(gè)方面 :

一,網(wǎng)速問題:有的時(shí)候網(wǎng)頁加載的比較慢猪瞬,在程序執(zhí)行的時(shí)候要操作的元素沒有顯示出來管削。這種情況比較常見,運(yùn)行一次網(wǎng)速好的時(shí)候通過了撑螺,再運(yùn)行一次,頁面沒有打開崎弃,就不通過了甘晤。為了提高穩(wěn)定性含潘,我們只能犧牲運(yùn)行時(shí)間了,在經(jīng)常檢測失敗的元素前加上等待時(shí)間线婚,等要操作的元素出現(xiàn)之后再執(zhí)行下面的操作遏弱。

二,Selelnium的原因:Selenium1.0和2.0還是有區(qū)別的塞弊,有些兒函數(shù)在2.0下運(yùn)行確實(shí)有時(shí)而有效漱逸,時(shí)面無效。如果mouseover()函數(shù)游沿,就是這種情況饰抒, 我們需要避免使用這類的函數(shù)。

三诀黍,多線程的時(shí)候袋坑,測試用例間相互影響。雖然多線程的時(shí)候運(yùn)行速度比較快眯勾,但是如果用例之間的耦合性沒有設(shè)計(jì)好枣宫,也會(huì)影響的,如果用例A先于用例B執(zhí)行的時(shí)候吃环,就會(huì)影響到用例B也颤;反之則沒有問題。這種情況郁轻,如果你的自動(dòng)化測試工程打算多線程的時(shí)候翅娶,提前就要把測試用例測試的耦合度比較松,盡量沒有任何關(guān)系范咨,因?yàn)槎嗑€程的執(zhí)行順序是不受控制的故觅。

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

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

一,自動(dòng)化測試用例是用來監(jiān)控的替蛉,在此目的下贯溅,我們就把自動(dòng)化測試用例設(shè)置成定時(shí)執(zhí)行的,如果每五分鐘或是一個(gè)小時(shí)執(zhí)行一次躲查,在jenkins上創(chuàng)建一個(gè)定時(shí)任務(wù)即可它浅。

二,必須回歸的用例镣煮。有些兒測試用例姐霍,如BVT測試用例,我們在公司產(chǎn)品任何變動(dòng)上線之前都需要回歸執(zhí)行。那我們就把測試用例設(shè)置成觸發(fā)式執(zhí)行镊折,在jenkins上將我們的自動(dòng)化測試任務(wù)綁定到開發(fā)的build任務(wù)上胯府。當(dāng)開發(fā)人員在仿真環(huán)境上部代碼的時(shí)候,我們的自動(dòng)化測試用例就會(huì)被觸發(fā)執(zhí)行恨胚。

三骂因,不需要經(jīng)常執(zhí)行的測試用例。像全量測試用例赃泡,我們沒有必要一直回歸執(zhí)行寒波,必竟還是有時(shí)間消耗的,有些非主要業(yè)務(wù)線也不需要時(shí)時(shí)回歸升熊。這類測試用例我們就采用人工執(zhí)行俄烁,在jenkins創(chuàng)建一個(gè)任務(wù),需要執(zhí)行的時(shí)候人工去構(gòu)建即可僚碎。

7猴娩、什么是持續(xù)集成?

- 持續(xù)集成源于極限編程(XP)勺阐,是一種軟件實(shí)踐卷中,[軟件開發(fā)過程中集成步驟是一個(gè)漫長并且無法預(yù)測的過程。集成過程中可能會(huì)爆發(fā)大量的問題渊抽,因此集成過程需要盡可能小而多蟆豫,實(shí)際上持續(xù)集成講的是不斷的去做軟件的集成工作。持續(xù)集成懒闷,最簡單的形式是包括一個(gè)監(jiān)控版本控制(SVN等等)變化的工具十减。當(dāng)變化被發(fā)覺時(shí),這個(gè)工具可以自動(dòng)的編譯并測試你的應(yīng)用愤估。

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

- UI自動(dòng)化不需要

- 接口測試會(huì)需要

 9玩焰、id,name,class,xpath, css selector這些屬性由驹,你最偏愛哪一種,為什么昔园?

- css 蔓榄、xpath 幾乎所有的元素都可以定位到

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

- 觸發(fā)動(dòng)態(tài)加載元素的事件甥郑,直至動(dòng)態(tài)元素出現(xiàn),進(jìn)行定位

11荤西、如何去定位屬性動(dòng)態(tài)變化的元素澜搅?

- xpath或者css通過同級伍俘、父級、子級進(jìn)行定位

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

- 會(huì)的

 13赂蕴、webdriver client的原理是什么?

- Webdriver實(shí)現(xiàn)原理

通過研究selenium-webdriver的源碼舶胀,筆者發(fā)現(xiàn)其實(shí)webdriver的實(shí)現(xiàn)原理并不高深莫測無法揣度概说。在這里以webdriver ruby binding的firefox-webdriver實(shí)現(xiàn)為例,簡單介紹一下webdriver的工作原理嚣伐。

當(dāng)測試腳本啟動(dòng)firefox的時(shí)候糖赔,selenium-webdriver 會(huì)首先在新線程中啟動(dòng)firefox瀏覽器。如果測試腳本指定了firefox的profile轩端,那么就以該profile啟動(dòng)放典,否則的話就新啟1個(gè)profile,并啟動(dòng)firefox基茵;

firefox一般是以-no-remote的方法啟動(dòng)奋构,啟動(dòng)后selenium-webdriver會(huì)將firefox綁定到特定的端口,綁定完成后該firefox實(shí)例便作為webdriver的remote [<u>server</u>](javascript:;)存在拱层;

客戶端(也就是測試腳本)創(chuàng)建1個(gè)session弥臼,在該session中通過http請求向remote server發(fā)送restful的請求,remote server解析請求根灯,完成相應(yīng)操作并返回response径缅;

客戶端接受response,并分析其返回值以決定是轉(zhuǎn)到第3步還是結(jié)束腳本烙肺;

這就是webdriver的工作流程纳猪,看起來很復(fù)雜實(shí)際上當(dāng)了解了webdriver的實(shí)現(xiàn)原理后,理解上述問題應(yīng)該比較簡單桃笙。

webdriver是按照server – client的經(jīng)典設(shè)計(jì)模式設(shè)計(jì)的氏堤。

server端就是remote server,可以是任意的瀏覽器怎栽。當(dāng)我們的腳本啟動(dòng)瀏覽器后丽猬,該瀏覽器就是remote server,它的職責(zé)就是等待client發(fā)送請求并做出相應(yīng)熏瞄;

client端簡單說來就是我們的測試代碼脚祟,我們測試代碼中的一些行為,比如打開瀏覽器强饮,轉(zhuǎn)跳到特定的url等操作是以http請求的方式發(fā)送給被 測試瀏覽器由桌,也就是remote server;remote server接受請求,并執(zhí)行相應(yīng)操作行您,并在response中返回執(zhí)行狀態(tài)铭乾、返回值等信息;

 14娃循、webdriver的協(xié)議是什么炕檩?

-The WebDriver Wire Protocol

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

-http

16笛质、什么是page object設(shè)計(jì)模式?

-http://www.cnblogs.com/tsbc/p/4080301.html

相似功能地方捞蚂,代碼基本都是一樣的妇押,界面元素?fù)Q個(gè)查找方式,把原來的使用 xpath方式姓迅,改為使用 id 查找敲霍,需要對每個(gè)用例腳本都要改,雖然幾個(gè)用例看不出什么工作量丁存,但是重復(fù)findElement的代碼肩杈,已經(jīng)讓我們感到了代碼的笨重。如果某些定位發(fā)生了改變柱嫌,我們就得貫穿整個(gè)測試代碼進(jìn)行調(diào)整元素定位锋恬,這樣就會(huì)導(dǎo)致我們的腳本在后期,難以維護(hù)编丘。因此通過Page Object Model 我們可以創(chuàng)建更加健壯代碼与学,并減少或者消除重復(fù)的測試代碼,從而也能夠提高代碼的可讀性嘉抓,減少編寫腳本的工作量索守。Page Object Model的實(shí)現(xiàn),就是通過分離測試對象和測試腳本的抽象來實(shí)現(xiàn)的抑片。

17卵佛、什么是page factory設(shè)計(jì)模式?

- http://relevantcodes.com/pageobjects-and-pagefactory-design-patterns-in-selenium/

18敞斋、怎樣去選擇一個(gè)下拉框中的value=xx的option截汪?

-二次定位

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

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

20焰枢、什么是斷言蚓峦?

-斷言的英文是assertion舌剂,斷言檢查的英文是assertion checking。

-斷言是指定一個(gè)程序必須已經(jīng)存在的狀態(tài)的一個(gè)邏輯表達(dá)式暑椰,或者一組程序變量在程序執(zhí)行期間的某個(gè)點(diǎn)上必須滿足的條件霍转。

21、如果你進(jìn)行自動(dòng)化測試方案的選型一汽,你會(huì)選擇哪種語言避消,java,js角虫,python還是ruby沾谓?

-使用自己熟悉的語言

22、page object設(shè)置模式中戳鹅,是否需要在page里定位的方法中加上斷言?

-不需要

 23昏兆、page object設(shè)計(jì)模式中枫虏,如何實(shí)現(xiàn)頁面的跳轉(zhuǎn)?

-get爬虱、click (可能有坑)

 24隶债、自動(dòng)化測試用例從哪里來?

-手工用例中抽取

-可以參考自動(dòng)化用例的執(zhí)行策略

 25跑筝、你覺得自動(dòng)化測試最大的缺陷是什么死讹?

-不穩(wěn)定

-可靠性

-不易維護(hù)

-成本與收益

 26、什么是分層測試曲梗?

-分層自動(dòng)化

還是自己理解吧

27赞警、webdriver可以用來做接口測試嗎?

-有難度虏两,不推薦

28愧旦、get和post 的區(qū)別?(感覺可能答案不對)

-因?yàn)槭褂肎ET請求不會(huì)產(chǎn)生什么動(dòng)作定罢。不會(huì)產(chǎn)生動(dòng)作意味著GET的HTTP請求不會(huì)在服務(wù)器上產(chǎn)生任何結(jié)果笤虫。但是安全方法并不是什么動(dòng)作都不產(chǎn)生,這里的安全方法僅僅指不會(huì)修改信息祖凫。POST可能會(huì)修改服務(wù)器上的資源的請求琼蚯。比如CSDN的博客,用戶提交一篇文章或者一個(gè)讀者提交評論是通過POST請求來實(shí)現(xiàn)的惠况,因?yàn)樵偬峤晃恼禄蛘咴u論提交后資源(即某個(gè)頁面)不同了遭庶,或者說資源被修改了。

兩種請求方式的區(qū)別:

1售滤、GET請求罚拟,請求的數(shù)據(jù)會(huì)附加在URL之后台诗,以?分割URL和傳輸數(shù)據(jù),多個(gè)參數(shù)用&連接赐俗。URL的編碼格式采用的是ASCII編碼拉队,而不是uniclde,即是說所有的非ASCII字符都要編碼之后再傳輸阻逮。

POST請求:POST請求會(huì)把請求的數(shù)據(jù)放置在HTTP請求包的包體中粱快。上面的item=bandsaw就是實(shí)際的傳輸數(shù)據(jù)。因此叔扼,GET請求的數(shù)據(jù)會(huì)暴露在地址欄中事哭,而POST請求則不會(huì)。

2瓜富、傳輸數(shù)據(jù)的大小

在HTTP規(guī)范中鳍咱,沒有對URL的長度和傳輸?shù)臄?shù)據(jù)大小進(jìn)行限制。但是在實(shí)際開發(fā)過程中与柑,對于GET谤辜,特定的瀏覽器和服務(wù)器對URL的長度有限制。因此价捧,在使用GET請求時(shí)丑念,傳輸數(shù)據(jù)會(huì)受到URL長度的限制。

對于POST结蟋,由于不是URL傳值脯倚,理論上是不會(huì)受限制的,但是實(shí)際上各個(gè)服務(wù)器會(huì)規(guī)定對POST提交數(shù)據(jù)大小進(jìn)行限制嵌屎,Apache推正、IIS都有各自的配置。

3编整、安全性

POST的安全性比GET的高

29舔稀、公司內(nèi)一直在使用的測試系統(tǒng)(B/S架構(gòu))突然不能訪問了,需要你進(jìn)行排查并恢復(fù)掌测,說出你的檢查方法

答:

一内贮、網(wǎng)站輸入域名直接無法訪問,網(wǎng)站之前還正常汞斧,突然就無法訪問

1. 測試FTP是否正骋褂簦可以登錄,不能登錄的直接問空間商那是空間商的問題直接聯(lián)系他們粘勒。

2. 空間贈(zèng)送的三級域名是否能夠訪問網(wǎng)站打開網(wǎng)站(空間都贈(zèng)送三級域名)竞端,如果也不能訪問應(yīng)該是空間問題。

3. 在電腦的開始菜單運(yùn)行中輸入cmd庙睡,在彈出的黑框中輸入:ping 你的域名事富;然后回車技俐,如果看不到IP或IP地址與你的主機(jī)地址不符,則說明域名解析有誤,是域名的問題得重新解析域名统台。

二雕擂、訪問報(bào)404錯(cuò)誤(無法找到該頁)。說明是網(wǎng)站內(nèi)容都正常是程序出現(xiàn)問題贱勃,看看程序是否完整井赌。

三、訪問網(wǎng)站出現(xiàn)[<u>MySQL</u>](javascript:;) Server Error 這個(gè)是數(shù)據(jù)庫鏈接錯(cuò)誤贵扰,查看數(shù)據(jù)庫連接文件和數(shù)據(jù)庫是不是錯(cuò)誤仇穗。

四、訪問網(wǎng)站出現(xiàn)500錯(cuò)誤戚绕。

1. 請登錄FTP查看是否多了異常文件或丟失文件纹坐,說明網(wǎng)站被侵入了,馬上聯(lián)系網(wǎng)站制作進(jìn)行進(jìn)行排查故障舞丛。

2. 如果空間且FTP程序目錄沒有缺失文件或剛剛安裝就出現(xiàn)500錯(cuò)誤恰画,請確認(rèn)空間已開啟scandir()函數(shù),查看是不是禁止了這個(gè)函數(shù)瓷马。

曾經(jīng)夢想仗劍走天涯,然而bug太多跨晴,沒時(shí)間去

參考鏈接
http://www.51testing.com/html/20/n-4463720.html?nomobile=1#

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欧聘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子端盆,更是在濱河造成了極大的恐慌怀骤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焕妙,死亡現(xiàn)場離奇詭異蒋伦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焚鹊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門痕届,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人末患,你說我怎么就攤上這事研叫。” “怎么了璧针?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵嚷炉,是天一觀的道長。 經(jīng)常有香客問我探橱,道長申屹,這世上最難降的妖魔是什么绘证? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮哗讥,結(jié)果婚禮上嚷那,老公的妹妹穿的比我還像新娘。我一直安慰自己忌栅,他們只是感情好车酣,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著索绪,像睡著了一般湖员。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瑞驱,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天娘摔,我揣著相機(jī)與錄音,去河邊找鬼唤反。 笑死凳寺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彤侍。 我是一名探鬼主播肠缨,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盏阶!你這毒婦竟也來了晒奕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤名斟,失蹤者是張志新(化名)和其女友劉穎脑慧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砰盐,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闷袒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岩梳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囊骤。...
    茶點(diǎn)故事閱讀 38,809評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖蒋腮,靈堂內(nèi)的尸體忽然破棺而出淘捡,到底是詐尸還是另有隱情,我是刑警寧澤池摧,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布她渴,位于F島的核電站荸型,受9級特大地震影響帅戒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乌逐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望创葡。 院中可真熱鬧浙踢,春花似錦、人聲如沸灿渴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骚露。三九已至蹬挤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棘幸,已是汗流浹背焰扳。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留误续,地道東北人吨悍。 一個(gè)月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像蹋嵌,于是被迫代替她去往敵國和親育瓜。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評論 2 351