2011-06-15 56 views
2

我需要在無頭Ubuntu服務器上使用Selenium RC,以使用外部代理服務器來模擬不同國家的用戶對網站運行測試。如何通過外部代理服務器發送無頭Selenium RC測試?

要測試的過程中,我創建了一個非常簡單的PHPUnit的測試腳本,其基本作用:

$this->setBrowser("*firefox"); 
$this->setBrowserUrl("http://www.ipchicken.com/"); 
$this->open("/"); 
$this->assertTrue($this->isTextPresent(<proxy ip>)); 

我使用這些代理服務器指令(有代理上的無身份驗證)開始了我的硒RC:

export DISPLAY=":99" && java -Dhttp.proxyHost=<proxy ip> -Dhttp.proxyPort=<proxy port> -jar /var/lib/selenium/selenium-server.jar -avoidProxy 

但我的測試腳本失敗了斷言。如果我更改測試以斷言我的Selenium服務器IP地址,斷言將通過,這使我們看起來像Selenium直接向ipchicken.com發送「open」請求,而不是通過代理服務器發送它。

硒服務器可以訪問代理服務器好吧 - 我已經用一個簡單的PHP Curl腳本測試過了。如果我通過代理服務器使用Curl請求ipchicken.com,它將返回代理服務器IP地址就好了。

回答

0

我遇到了同樣的問題,試圖讓代理在Ubuntu系統上工作,並且無法讓-Dhttp.proxyHost etc ...設置正常工作。我的解決方案是在java命令之前導出http_proxy - 就像您在使用DISPLAY一樣。

export http_proxy = http://username:[email protected]:port 

更新:由於使用的是Firefox,你還需要在Firefox設置適當的代理設置。 (掛起你在你的評論中提到的是firefox無法通過代理)。你需要運行firefox profilemanager與

firefox -ProfileManager 

然後創建一個新的配置文件。爲配置文件的路徑創建一個新目錄,因爲它會在該位置放置大量文件。在該配置文件內創建適當的代理設置。您現在可以使用firefoxProfileTemplate選項與硒RC:

java -jar ..... -firefoxProfileTemplate /path/to/your/new/profile 

注意,您只需要運行一次配置文件管理器,然後這樣你就可以運行無頭。

+0

感謝 - 這是一個很好的想法,但是這將導致RC服務器可以在「啓動Firefox」階段掛起。如果我嘗試「導出http_proxy =主機:端口」(即沒有http://前綴),RC服務器工作正常,但仍然不使用代理。 – 2011-06-16 12:03:21

+0

有關使用Firefox修補程序添加到修復程序的信息。 – borrible 2011-06-16 12:35:06

+1

完美 - 謝謝!作爲其他人爲此付出的一個側面提示,我最初使用的是Selenium v​​2.0b2,它沒有以真正的用戶配置文件啓動Firefox。升級到Selenium v​​2.0rc3爲我解決了這個問題,但我認爲它實際上是在v2.0b3中修復的。 – 2011-06-29 11:55:30

0

我將短解釋在使用硒網格
1.首先開始使用Xorg顯示:96 -ac在Linux
2.現在導出DISPLAY = 96。
3.啓動firefox
4.使用硒網格啓動Selenium端口。
上述步驟應該在Linux服務器上完成。

1.在linux上啓動selenium服務器之前,在您的機器上啓動集線器
2.現在執行該腳本,它將轉到linux上的活動端口。

感謝