小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Selenium2+python自動化39-關(guān)于面試的題

 上海悠悠 2021-05-27

前言

最近看到群里有小伙伴貼出一組面試題,最近又是跳槽黃金季節(jié),小編忍不住抽出一點時間總結(jié)了下,

回答不妥的地方歡迎各位高手拍磚指點。

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

首先selenium里面是沒有這個方法的,判斷元素存在需要自己寫一個方法了。

元素存在有幾種形式,一種是頁面有多個元素屬性重復(fù)的,這種直接操作會報錯的;還有一種是頁面隱藏的元素操作也會報錯

判斷方法參考這篇:Selenium2+python自動化36-判斷元素存在

二、selenium中hidden或者是display = none的元素是否可以定位到?

定位是可以定位到的,但是不能操作,可以判斷元素is_displayed()

(我一直不里面這個定位到底是幾個意思,只要頁面上有的元素,我覺得都能定位到,

實在不行,小編可以爬源碼Selenium2+python自動化37-爬頁面源碼(page_source),能不能操作那是另外一回事)

三、selenium中如何保證操作元素的成功率?也就是說如何保證我點擊的元素一定是可以點擊的?

一種是隱式等待: driver.implicitly_wait()

另外一種是顯式等待:WebDriverWait()

等待時間放長一點參考這篇:Selenium2+python自動化38-顯示等待(WebDriverWait)

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

1.少用sleep

2.多用顯式等待方法

3.弄個性能好的電腦


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

1.查找元素前先做前置條件判斷:expected_conditions()里面的各種方法(這個我的博客里面暫時沒寫。后續(xù)補上)

2.顯式等待:WebDriverWait()

這兩者配合使用

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

1.集成到j(luò)enkins一鍵執(zhí)行,可以手動執(zhí)行,也可以定時執(zhí)行

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

1.持續(xù)集成是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成它們的工作,通過每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。

每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡早地發(fā)現(xiàn)集成錯誤。

八、自動化測試的時候是不是需要連接數(shù)據(jù)庫做數(shù)據(jù)校驗?

1 UI自動化不需要

2 接口測試會需要

九、id,name,class,xpath, css selector這些屬性,你最偏愛哪一種,為什么?

1.css妥妥的,css語法簡潔,定位快(xpath語法長,定位慢,還不穩(wěn)定)

十、如何去定位頁面上動態(tài)加載的元素?

1. WebDriverWait()方法循環(huán)去查詢是否元素加載出來了

十一、如何去定位屬性動態(tài)變化的元素?

1.先去找該元素不變的屬性,要是都變,那就找不變的父元素,用層級定位(以不變應(yīng)萬變)

十二、點擊鏈接以后,selenium是否會自動等待該頁面加載完畢?

1.這個不會等的,沒加載完也可以下一步操作

十三、webdriver client的原理是什么?

[Webdriver實現(xiàn)原理](http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html)

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

  • 當(dāng)測試腳本啟動firefox的時候,selenium-webdriver 會首先在新線程中啟動firefox瀏覽器。如果測試腳本指定了firefox的profile,那么就以該profile啟動,否則的話就新啟1個profile,并啟動firefox;

  • firefox一般是以-no-remote的方法啟動,啟動后selenium-webdriver會將firefox綁定到特定的端口,綁定完成后該firefox實例便作為webdriver的remote server存在;

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

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

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

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

server端就是remote server,可以是任意的瀏覽器。當(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)、返回值等信息;

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

1.這個尷尬了,不懂

十五、啟動瀏覽器的時候用到的是哪個webdriver協(xié)議?

1.http

十六、什么是page object設(shè)計模式?

1.通俗來講,就是頁面元素放到一個腳本,方便頁面元素的維護

2.測試用例從這個頁面元素腳本里面去調(diào)用

十七、什么是page factory設(shè)計模式?

1.通俗來講,就是把八種元素定位合并為一種方法

(這個我也不知道怎么解釋了。。。)

十八、怎樣去選擇一個下拉框中的value=xx的option?

1.select類里面提供的方法:select_by_value(“xxx”)

參考這篇:Selenium2+python自動化15-select下拉框

2.xpath的語法也可以定位到

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

1.js方法,直接讓該元素置頂

參考這篇:Selenium2+python自動化17-JS處理滾動條

2.要是點擊后沒高亮,就用js去修改屬性吧(萬能的js)

 參考這篇:Selenium2+python自動化25-js處理日歷控件

二十、什么是斷言?

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

十二一、如果你進行自動化測試方案的選型,你會選擇哪種語言,java,js,python還是ruby?

1.大python威武,js也要略懂

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

1.不需要

二十三、page object設(shè)計模式中,如何實現(xiàn)頁面的跳轉(zhuǎn)?

1.click方法

二十四、自動化測試用例從哪里來?

1.自己寫的

2.別人寫的

(這問題有點腦殘,反正不是天上掉下來的)

二十五、你覺得自動化測試最大的缺陷是什么?

1.需求變動大的時候,維護成本大

二十六、什么是分層測試?

1.數(shù)據(jù)層

2.接口層

3.UI層

自由發(fā)揮吧

二十七、webdriver可以用來做接口測試嗎?

1.不可以

用大python就可以了妥妥的了

總結(jié):從整個的面試題來看,難度還是挺大的,特別是腳本性能的優(yōu)化這塊,如果只是會簡單的幾個元素定位是完全無法著手優(yōu)化的。

能提這些問題出來的面試官也是有一定實力的。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多