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