天天看點

百度搜尋_Selenium WebDriver 環境搭建和錯誤調試_chromedriver_win32必須下載下傳否則無法測試chrome

轉自:  http://www.360doc.com/content/14/0821/18/597197_403634783.shtml

 ztree 東西不多,我也一直使用着原始的人工測試手段,随着内容的不斷增多,測試起來就越發的繁雜,而且經常犯懶,這樣就會忽略很多本該發現的問題,而且也容易出現舊的bug 反複出現的情況,這都是測試不規範造成的。要做好東西就要更加規範和嚴格,于是乎決定要學習一下 selenium webdriver,也就是原先的  selenium v2 了,這方面整體的文章并不多,是以一邊學着,自己一邊整理吧。

    對于這個可以自動化測試的工具( selenium webdriver)我就不做過多描述了,去 google、baidu 搜尋一下即可。 我這裡隻記錄學習  selenium webdriver 的過程,尤其是運作時可能出現的問題,當然了,我是做java的,我隻學習 java 與  selenium webdriver 配合的方法。

一、下載下傳檔案

先要去官網(http://seleniumhq.org/download/)下載下傳必需的檔案:

selenium ide (專門用于 firefox 測試的獨立界面,可以錄制測試步驟,但我更傾向于寫代碼做标準的功能測試)

selenium server (可以輸入指令控制、可以解決跨域的 js 問題,等到後面學到了再講吧)

the internet explorer driver server (專門用于ie測試的)

selenium client drivers (可以找到你熟悉的語言,例如我選擇的 java)

third party browser drivers not supported/developed by seleniumhq(第三方開發的 selenium 插件,第一個就是 chrome 的,否則你就沒辦法測試 chrome 了)

其他的,就根據你自己的需要尋找吧,目前這些足夠我用了。

二、安裝 & 運作

貌似擺弄新東西時,隻有 “hello world” 蹦出來以後,我們這些初學者才會感到情緒穩定,那就趕緊開始吧。

對于初期打算直接用程式設計方式制作測試用例的情況來說,selenium ide、selenium server 都可以不用安裝執行。

英語好的朋友可以直接看官網的文檔(http://seleniumhq.org/documentation/)就能夠開始使用了。

看中文的,就繼續聽我唠叨:

【1. 建立 maven 工程】

selenium 支援 maven 工程,這會讓你的工作更加簡便。

用 eclipse 建個 maven 的工程,建成後,直接修改 pom.xml,(參考:http://seleniumhq.org/docs/03_webdriver.html#setting-up-a-selenium-webdriver-project)

pom.xml 修改儲存後,eclipse 會自動把需要的 jar 包下載下傳完成。

【2. 測試 firefox】

selenium 最初就是在 firefox 上做起來的插件,是以我們先來搭建 firefox 的環境。

確定你正确安裝了 firefox 後,就可以直接編寫 java 代碼測試喽。

 在 lesson1 目錄下建立 exampleforfirefox.java

(因為國内不少朋友通路 google 的時候會出問題,是以我就把代碼中的 google 變成 baidu 了)

普通情況下,直接運作代碼就可以看到會自動彈出 firefox 視窗,通路 baidu.com,然後輸入關鍵字并查詢,一切都是自動完成的。

錯誤提醒:

1)exception in thread "main" org.openqa.selenium.webdriverexception: cannot find firefox binary in path. make sure firefox is installed.

出現這個錯誤,是說明你的 firefox 檔案并沒有安裝在預設目錄下,這時候需要在最開始執行:system.setproperty 設定環境變量  "webdriver.firefox.bin" 将自己機器上 firefox 的正确路徑設定完畢後即可。

2)exception in thread "main" org.openqa.selenium.unsupportedcommandexception: bad request

出現這個錯誤,很有意思。 查了一下 有人說應該是 hosts 出現了問題,加上一個 127.0.0.1  localhost 就行了,但我的 hosts 上肯定有這個玩意,為啥也會出現這個問題呢? 

經過調試,發現 127.0.0.1 localhost 的設定必須要在 hosts 檔案的最開始,而且如果後面有其他設定後,也不要再出現同樣的 127.0.0.1 localhost ,隻要有就會出錯。(因為我為了友善通路 google 的網站,專門加入了 smarthosts 的内容,導緻了 localhost 的重複)

【3. 測試 chrome】

chrome 雖然不是 selenium 的原配,但是沒辦法,她太火辣了,絕對不能抛下她不管的。

把 exampleforfirefox.java 稍微修改就可以制作出一個 exampleforchrome.java ,直接把 new firefoxdriver() 修改為 new chromedriver() 你會發現還是行不通。

錯誤如下:

1)exception in thread "main" java.lang.illegalstateexception: the path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see http://code.google.com/p/selenium/wiki/chromedriver. the latest version can be downloaded from http://code.google.com/p/chromedriver/downloads/list

這應該是找不到 chrome 的檔案,好吧,利用 system.setproperty 方法添加路徑,這裡要注意,是 “webdriver.chrome.driver” 可不是“webdriver.chrome.bin”

設定路徑後還是會報錯:

2)[6416:4580:1204/173852:error:gpu_info_collector_win.cc(91)] can't retrieve a valid winsat assessment.

這個貌似是因為 selenium 無法直接啟動 chrome 導緻的,必須要通過前面咱們下載下傳 chrome 的第三方插件 chromedriver,去看第一個錯誤中提示給你的 網址:http://code.google.com/p/selenium/wiki/chromedriver

按照人家給的例子來修改我們的測試代碼吧:

運作一下看看,是不是一切ok了?

 【2012.12.06補充】

 上一個 demo 中無法正常使用 new chromedriver(),今天在做進一步學習時看到一篇文章(http://qa.blog.163.com/blog/static/19014700220122231779/?),恍然大悟,原來隻需要把 'webdriver.chrome.driver?’ 的值設定為 chromedriver 的路徑就可以了。

【4. 測試 ie】

想逃避 ie 嗎?? 作為前端開發,ie 你是必須要面對的,沖吧!

其實你會發現, selenium 主要也就是針對 firefox 和 ie 來制作的,是以把 firefox 的代碼修改為 ie 的,那是相當的容易,隻需要簡單地兩步:

1)把 exampleforfirefox.java 另存為 exampleforie.java 

2)把 webdriver driver = new firefoxdriver(); 修改為 webdriver driver = new internetexplorerdriver();

3)一般大家的 ie都是預設路徑吧,是以也就不用設定 property 了

運作一下,是不是 so easy?

 入門工作完成,現在完全可以利用 java 代碼,讓 selenium 自動執行我們設定好的測試用例了,不過.....這僅僅是個開始。