1. 程式人生 > >Selenium學習之==>常見面試題

Selenium學習之==>常見面試題

remote 可見 高亮 缺陷 提升 瀏覽器 就是 clas 結束

轉自: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學習之==>常見面試題