Selenium的面試題

(1)selenium的工做原理?javascript

       ① 腳本啓動drivercss

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

       ③ 執行腳本發送請求web

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

(2)selenium自動化頁面元素找不到存在異常的緣由?瀏覽器

        ① 元素定位錯誤服務器

        ② 頁面加載時間過慢,須要查找的元素程序已經完成,單頁面還未加載,此時能夠加載頁面等待時間多線程

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

(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')

相關文章
相關標籤/搜索