Selenium學習之==>常見面試題
轉自:http://www.imdsx.cn/
一、selenium中如何判斷元素是否存在?
expected_conditions模塊提供了多種校驗方式,我常用的一種是presence_of_element_located(判斷某個元素是否被加到了dom樹裏,並不代表該元素一定可見,如果定位到就返回WebElement)。如果有需要的話,我還可以自定義expected_conditions方法。
二、selenium中hidden或者是display = none的元素是否可以定位到?
可以定位到,但是不能操作,為了顯示我們會的更多,我們可以說通過is_displayed()方法來判斷顯示或不顯示,如果想點擊的話,可以用js去掉dispalay=none的屬性。
三、selenium中如何保證操作元素的成功率?也就是說如何保證我點擊的元素一定是可以點擊的?
通過wait模塊中的WebDriverWait類提供的until或until_not方法與expected_conditions結合使用,進行二次封裝。
四、如何提高selenium腳本的執行速度?
1.少用sleep,盡量不用implicitly_wait
2.多用顯式等待方法
五、用例在運行過程中經常會出現不穩定的情況,也就是說這次可以通過,下次就沒辦法通過了,如何去提升用例的穩定性?
通過wait模塊中的WebDriverWait類提供的until或until_not方法與expected_conditions結合使用,進行二次封裝。
六、自動化測試的時候是不是需要連接數據庫做數據校驗?
UI自動化不需要、接口測試會需要
七、id,name,class,xpath, css selector這些屬性,你最偏愛哪一種,為什麽?
我喜歡用css selector css語法簡潔,定位快(xpath語法長,定位慢,還不穩定)
八、如何去定位頁面上動態加載的元素?
通過wait模塊中的WebDriverWait類提供的until循環的去判斷是否出現了要用的元素
九、如何去定位屬性動態變化的元素?
先去找該元素不變的屬性,要是都變,那就找不變的父元素,用層級定位
十、webdriver client的原理是什麽?
當測試腳本啟動Chrome的時候,selenium-webdriver 會首先在新線程中啟動Chrome瀏覽器。啟動後selenium-webdriver會將Chrome綁定到特定的端口,綁定完成後該chrome實例便作為webdriver的remote server存在;客戶端(也就是測試腳本)創建1個會話,在該session中通過http請求向remote server發送請求,remote server解析請求,完成相應操作並返回response;客戶端接受response,並分析其返回值以決定是轉到第3步還是結束腳本;
webdriver是按照server – client的經典設計模式設計的。
server端就是remote server,可以是任意的瀏覽器。當我們的腳本啟動瀏覽器後,該瀏覽器就是remote server,它的職責就是等待client(腳本)發送請求並做出相應;
client端簡單說來就是我們的測試代碼,我們測試代碼中的一些行為,比如打開瀏覽器,轉跳到特定的url等操作是以http請求的方式發送給被測試瀏覽器,也就是remote server;remote server接受請求,並執行相應操作,並在response中返回執行狀態、返回值等信息;
十一、什麽是page object設計模式?
1.把每個頁面當成一個頁面對象,對頁面的可操作功能進行封裝
2.測試case通過調用頁面對象的方式來完成case的編寫
3.可以做到UI操作與case編寫進行分離
十二、怎樣去選擇一個下拉框中的value=xx的option?
1、通過兩次click可以做到
2、通過執行js腳本做到(前提是你能寫出js代碼)
3、selenium提供了select模塊,我們可以通過select模塊中的方法定位,比如 index_of、value、text
4、還可以通過xpath定位,但是有時會出錯誤
十三、如何在定位元素後高亮元素
通過js更改元素屬性
十四、UI自動化最大的缺陷是什麽?
需求變動大的時候,維護成本大
十五、webdriver可以用來做接口測試嗎?
不可以、webdriver是專門做webUI自動化的。
Selenium學習之==>常見面試題