2011-08-03 27 views
8

Tôi đang cố gắng chạy thử nghiệm Selenium của mình đối với Chrome. Khi tôi khởi tạo tài xế địa phương:Cách xây dựng Trình quản lý web từ xa cho Chrome

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

Tất cả mọi thứ hoạt động tốt (tôi đã đặt Chrome nhị phân trên PATH của tôi) Nhưng khi tôi cố gắng để khởi động nó từ xa:

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

tôi nhận được lỗi

sau

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)

Tôi hơi bối rối ở đó - làm thế nào chính xác tôi nên đặt thuộc tính hệ thống này? Tôi tìm thấy mã này được viết bằng 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); 

nhưng các thử nghiệm của tôi được viết bằng Ruby. RubyBindings không nói về vấn đề này http://code.google.com/p/selenium/wiki/RubyBindings

Trả lời

14

Thực tế là thông báo lỗi hơi sai. Bạn không để đặt thuộc tính hệ thống, nhưng tệp thực thi chromedriver cần phải có sẵn trong PATH trên máy từ xa (nơi máy chủ đang chạy).

Nếu bạn muốn xác định con đường như một thuộc tính, bạn có thể làm điều đó khi bạn khởi động máy chủ, ví dụ .:

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

Nó giải quyết vấn đề của tôi một cách hoàn hảo! Cám ơn bạn một lần nữa. – Yulia

+0

cảm ơn tuyệt vời! làm việc như một sự quyến rũ đối với tôi! –

1

Bạn phải đặt đường dẫn đến cromedriver.exe bên trong mã của thử nghiệm. một cái gì đó của nó như

System.setproperty(); 

trong Java

Tôi cũng đang sử dụng thử nghiệm Java dựa, vì vậy tôi không thể cung cấp cho bạn ví dụ chính xác cho Ruby. Nhưng về cơ bản, bạn phải nói cho chương trình Ruby của bạn biết đường dẫn đến số chromedriver.exe

+0

Cám ơn những lời khuyên, Pavel. Nhưng đó chính xác là những gì tôi đang tìm kiếm - cách thiết lập thuộc tính này trong Ruby. – Yulia

+0

Tôi không phải chuyên gia Ruby, vì vậy tôi không có đầu mối ... Nhưng sau khi tìm kiếm một số tôi tìm thấy câu hỏi này: http://stackoverflow.com/questions/2348621/ruby-setting-property-values-when-initializing-object Is điều đó có hữu ích không? Nếu không, có thể xem xét hỏi câu hỏi cụ thể của Ruby –

1

Được rồi, chàng trai. Với sự giúp đỡ tôi có thể tìm thấy câu trả lời. Kiểm tra nó ra.

Đó là cách bạn thiết lập trình điều khiển trên máy tính địa phương của bạn:

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

nơi

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

Trên máy từ xa chạy máy chủ sẽ là một cái gì đó như thế này

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

Sau khi chạy thử nghiệm của bạn từ máy địa phương.

Chúc bạn may mắn!

0

Tôi thấy câu trả lời được chọn là rất gây hiểu lầm. Tôi mất khoảng một giờ để giải phóng sai lầm trong đó. Nút là nút phải có bộ thuộc tính webdriver.chrome.driver, không phải là hub.

Do đó lệnh câu trả lời được lựa chọn thay vì nên là:

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

Các vấn đề liên quan