Selenium自動化面試題

(1)selenium的工作原理?

       ① 腳本啓動driver

       ② driver去驅動瀏覽器作爲遠程服務器

       ③ 執行腳本發送請求

       ④ 服務器解析請求作出相應操作,並返回給客戶端(腳本)

(2)selenium自動化頁面元素找不到存在異常的原因?

        ① 元素定位錯誤

        ② 頁面加載時間過慢,需要查找的元素程序已經完成,單頁面還未加載,此時可以加載頁面等待時間

        ③ 有可能元素包含在iframe或者frame裏面,需要切換。

(3)如何去定位屬性動態變化的元素?

        屬性動態變化是指該element沒有固定的屬性值,只能通過相對位置定位。

        第一種方法:用findelements遍歷

        第二種方法:通過xpath的軸    parent   /   following-sibling   /   precent-sibling

(4)如何去定位頁面上動態加載的元素?

        觸發動態事件,繼而findelement;如果是動態菜單,需要一級一級的find。

(5)selenium調用js(execute_script),有哪些場景?

        ① 對input執行輸入

        ② 對富文本框的操作

        ③ 滾動到指定位置操作

(6)selenium如何處理web彈窗?js彈窗?

       需要使用driver.switch_to.alert()

(7)selenium可以處理window彈窗嗎?

       selenium本身是不可以處理windows彈窗的,但是可以藉助AutoIT小工具來完成對windows彈窗的操作。比如 上傳下載附件等

(8)如何在定位元素後高亮元素(以調試爲目的)?

        使用javascript將元素的border或者背景顏色改成黃色或其他顏色即可

(9)selenium是否支持桌面應用軟件的自動化測試?

        不支持。selenium是根據網頁元素的屬性來地範圍元素的

(10)selenium是否有讀取excel文件的庫?

        沒有,需要藉助第三方工具。例如Apache PIO插件

(11)selenium是否可以向頁面發送鼠標滾輪操作?

        不能。

(12)如何在webdriver中調用應用程序?

       driver.get('url')  或者 driver.navigate().to('url')

(13)selenium中常見的異常?

       NoSuchElementException    找不到頁面元素異常

       ElementNoInteractac tableException

(14)selenium爲什麼不推薦使用xpath定位?

       selenium使用xpath定位時採用遍歷頁面的方式,性能指標較差。另外xpath定位有通過絕對路徑定位的,有時會不準確;

       而用css選擇器定位比較簡潔,運行速度更快,通常用於性能要求嚴格的場景。

(15)如何判斷一個頁面上元素是否存在?

       法1:用try...except  在代碼塊加上

       法2:用elements定義組元素方法  然後根其元素個數len()<1  存在返回True,  不存在則返回False

       法3:結合WebDriverWait和excepted_conditions條件判斷(強烈推薦)

                顯示等待,每間隔1秒判斷一次,30秒超時,存在返回True,不存在則返回False

(16)如何定位動態元素?

       動態元素有兩種情況:

              一個是屬性動態,定位時,若id是動態的,就不要用id定位,用其他定位元素方法

              另一個還是這個元素一會在頁面上方,一會在下方,飄忽不定,定位方法也是一樣,根據元素屬性定位(元素的tag name屬性是不會變的,動的只是class屬性和style屬性)

(17)如何通過子元素定位父元素?

       通過父元素定位子元素,可以通過二次定位來找到。

             第一種:通過子元素定位父元素,selenium提供了parent方法,但是隻能定位到父元素,卻不能獲取元素屬性,也不能操作。

             第二種:通過xpath的語法直接定位。  如.//*[@name="hello"]/..   兩個點代表父級元素。

(18)如何截取一個元素的圖片,不要截取全部圖片?

       首選截取當前頁面並自定義保存

       然後根據要截取元素圖片的屬性來獲取該元素的座標和大小 ele.location    ele.size

       然後分別left = ele.location['x']

                     top = ele.location['y']

                     right = ele.location['x'] + ele.size['width']

                     bottom = ele.location['y'] + ele.size['height']

       獲取該元素的圖片的座標大小

       最後,再次打開剛開始保存的,通過image類中的crop方法(相當於拷貝該元素的一個矩形區域),然後做保存操作就可以了。

(19)一個元素明明定位了,點擊無效(也沒報錯),如何解決?

       使用js點擊,selenium有時候點擊元素時會失效

       #  js 點擊

       js = 'document.getElementById('baidu').click()'

       driver.execute_script(js)

(20)如何提高腳本的穩定性?

       首先只要頁面一直沒變過,說明定位方法是沒問題的。

       優化方向:① 自己寫相對路徑,多用id爲節點查找,少用右鍵複製xpath,那種不穩定。

                         ② 第二個影響因素就是等待了,sleep等待儘量少用(影響執行時間)

                         ③ 定位元素方法重新封裝,結合WebDriverWait和excepted_conditions判斷元素方法,自己封裝一套定位元素方法

(21)提高selenium腳本的執行速度方式?

       減少不必要的操作。

       頁面加載過多並且不影響測試,可設置超時時間中斷頁面加載。

       設置等待時間時,可以sleep()固定的時間,檢測到元素出現後中斷等待也可以提高速度。

       配置testNG實現多線程,在編寫測試用例時,一定要實現松耦合,在服務器允許的情況下儘量設置多線程運行,提高執行速度。

(22)selenium自動化時,在平時遇到過那些問題?如何解決的?

       比如動態id  、有iframe的情況、沒加等待等因素

(23)selenium中隱藏元素定位,你該如何做?

       隱藏元素可以正常定位到,只是不能操作(定位元素和操作元素是兩碼事,操作元素是指click 、clear 、send_keys等這些方法)。我們可以用js來操作隱藏元素。js和selenium不同,只有頁面上有的元素(在dom裏面的)都能正常操作。

(24)上傳圖片的幾種方式?

       send_keys和AutoIT工具實現

(25)截圖應當怎麼操作?

       driver.get_screenshot_as_file('C:\test.jpg')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章