2011-08-03 43 views
8

我想對Chrome運行我的Selenium測試。當我在本地初始化驅動程序:如何構建適用於Chrome的遠程Webdriver

@driver = Selenium::WebDriver.for(:chrome) 

一切工作正常(我已經把Chrome的二進制我的PATH) 但是當我嘗試遠程啓動:

@driver = Selenium::WebDriver.for(:remote, :url => 'http://' + SELENIUM_HOST + port + webdriver_hub, :desired_capabilities => :chrome) 

我收到以下錯誤

Selenium::WebDriver::Error::UnhandledError: The path to the chromedriver 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/chromium/downloads/list (java.lang.IllegalStateException)

我有點困惑 - 我該如何設置這個系統屬性?我發現這個代碼寫在Java:

DesiredCapabilities caps = DesiredCapabilities.chrome(); 
caps.setJavascriptEnabled(true); 
caps.setCapability("chrome.binary", "/path/to/where/chrome/is/installed/chrome.exe"); 
System.setProperty("webdriver.chrome.driver","/path/to/where/you/ve/put/chromedriver.exe"); 
ChromeDriver driver = new ChromeDriver(caps); 

但我的測試是用Ruby編寫的。 RubyBindings不談論這個問題http://code.google.com/p/selenium/wiki/RubyBindings

回答

14

其實這個錯誤信息有點不對。您不需要已設置來設置系統屬性,但需要在遠程計算機上的PATH(服務器正在運行)中使用chromedriver可執行文件。

如果要指定路徑作爲屬性,你可以做,當你啓動服務器,例如:

java -Dwebdriver.chrome.driver=/path/to/driver -jar selenium-server-standalone.jar 
+0

它完美地解決了我的問題!再次感謝你。 – Yulia

+0

非常感謝!這對我來說就像是一種魅力! –

1

你必須路徑設置爲您cromedriver.exe測試的代碼中。它像

System.setproperty(); 

在Java中

我也使用基於Java的測試,所以我不能給你確切的Ruby例子。但基本上你必須告訴你的Ruby程序在哪裏路徑chromedriver.exe

+0

感謝您的提示,帕維爾。但這正是我正在尋找的 - 如何在Ruby中設置此屬性。 – Yulia

+0

我不是Ruby專家,所以我沒有線索......但一些搜索後,我發現這個問題:http://stackoverflow.com/questions/2348621/ruby-setting-property-values-when-initializing-object是那有幫助嗎?如果沒有,也許考慮問Ruby特定的問題 –

1

好了,夥計們。在幫助下,我可以找到答案。一探究竟。

那你是怎麼設置的驅動程序在本地計算機上:

@driver = Selenium::WebDriver.for(:remote, :chrome :url => 'http://' + SELENIUM_HOST + port + webdriver_hub, :desired_capabilities => browser) 

其中

browser = ':chrome' 
port = ':4444' 
webdriver_hub = '/wd/hub' 

在運行服務器的遠程機器將是這樣的

java -jar selenium-server-standalone-2.2.0.jar -Dwebdriver.chrome.driver="path/to/where/you/put/chromedriver.exe" 

從本地機器運行測試之後。

祝你好運!

0

我發現選定的答案很具誤導性。我花了大約一個小時才發現了它的錯誤。 節點是應具有webdriver.chrome.driver屬性集的一個,而不是集線器

因此所選答案的命令應該改爲:

java -Dwebdriver.chrome.driver=/path/to/driver -jar selenium-server-standalone.jar -role node

相關問題