WebDriver做爲Selenium項目的工具之一,能夠高效的操做各種主流瀏覽器包括諸如:chrome、IE、Firefox、Safari,並同時支持windows和*nux系統。WebDriver的初衷是爲了自動化測試,以後隨着爬蟲的興起,因爲不用分析和目標網站繁瑣的交互數據包,使用方便加上較高的效率以及必定的反反爬蟲特色,在針對特定網站內容爬取上,應用較多。spring
因爲本身最近的一個項目需求,對WebDriver進行了學習和應用,爲了保持和系統後臺語言的一致性(後臺使用spring框架),我選用的Java做爲開發語言。WebDriver基本的使用就不累述了,網上一搜一大把的,這裏主要分享一下在使用過程當中遇到的坑以及解決方案。chrome
以國外知乎quora的登錄頁面爲例,想要在Email輸入框中填寫信息,下圖紅框中:windows
若按照WebDriver官方的文檔操做的,就會拋出"element not interactable"的異常,代碼以下:瀏覽器
解決方法是使用Actions來進行操做,代碼以下:
框架
建議全部相似的操做,都直接使用Actions來進行操做,避免出現相似的問題。 工具
有一些網頁會經過內嵌iframe標籤的方法,來實現某些功能,若是直接操做iframe標籤中元素,會拋出"找不到元素(no such element)"的異常。好比163郵箱的註冊頁面:
學習
若是直接操做紅框中的元素,想在其中輸入用戶名,則會拋出異常。這個緣由就是因爲該元素在一個iframe中: 測試
此時的解決方案就是WebDriver提供的switchTo()方法,切換到該iframe中,再去操做目標元素,關鍵代碼以下:
網站
某些下拉框不能按照常規的流程來處理,即找到元素而後再點擊,用代碼表示就是下面這樣的:
spa
一個例子就是國外社交網站snapchat的註冊頁面,其手機號的國際區號選擇就是這樣一個下拉框:
若是按照常規流程,會拋出找不到元素的異常。
此時解決方案是使用WebDriver提供的Select類,關鍵代碼以下:
by:會飛的貓