Problem
先前文章中,曾提及我們是在每個平台的測試環境中,安裝待測瀏覽器。但這樣做法,在我們升級Selenium同時,發現在比較舊版本的Linux,是無法執行新版本的Firefox的。回頭想想,我們是要測試軟體是否可以在某種瀏覽器上正常使用,而不需要特別去管瀏覽器跑在哪一個系統上阿? 先前,我就知道Selenium是可以遠端執行的,這次加以嘗試,希望把瀏覽器的執行工作,都集中於某些虛擬機器上。
How to?
我們所要測試的瀏覽器,主要是IE與Firefox。而在Selenium2中,都是透過Web Driver的方式去執行瀏覽器動作。而我預想的測試模式,如下圖所示:
est Host負責透過Robotframework執行我們的測試工作,而與Web相關的則是透過Selenium2Library。Selenium2Library會透過Remote Selenium模式,請遠端的Selenium Server,根據請求的瀏覽器,去透過對應的Web Driver,喚起對應的瀏覽器做測試。接下來告訴大家該如何實現:
Prepare
在Remote的Server上,請先安裝好你想測試的瀏覽器。接著到此link下載對應的web driver,與Selenium Standalone Server。我使用的Selenium Server是2.48.2版本,相依於Java7以上。以下是我安裝清單:
- Java,7 & 8。
- Selenium Standalone Server,v2.48.2。
- Google Chrome Driver,v2.20。
- The Internet Explorer Driver Server,v2.48.0,32 bit。使用64bit會有輸入過慢問題,可參考此issue
Remote Server Setting
- 請先設好防火牆,預設的Selenium Standalone Server使用4444/tcp;IE Driver Server: 5555/tcp;Google Chrome Driver: 9515/tcp。最簡單就是全執行一次,就會跳出防火牆設定請你處理了。
- 新增執行Selenium Server的腳本:
腳本請預先執行,也可以直接丟到系統啟動中。
Robot Test Cases
調整原本的Robot Test Cases其實也不難,只要多增加一個remote_url參數即可:
remote_url=http://${selenium_server_ip}:4444/wd/hub
<tr> <td class="name"><a name="test_Test Selenium2"></a></td> <td>open browser</td> <td><a href="http://google.com">http://google.com</a></td> <td>googlechrome</td> <td>remote_url=http://192.168.1.150:4444/wd/hub</td> </tr>
Demo
請參考link。
我執行一個測試用的測試案例,主要用來確認在IE、Firefox與Google Chrome的Remote Selenium情況下,抓圖功能是否正常。
Others
如果在測試IE 11時,有遇到啟動瀏覽器卻無法做任何操作情形,可以看看Reference 3,必須透過修改註冊檔去解決這問題。
留言
張貼留言