2013-08-16 32 views
22

tôi đang cố gắng node.js selenium web driver example ...Lỗi: Đường dẫn đến tài xế thực thi phải được thiết lập bởi hệ thống webdriver.chrome.driver tài sản

var webdriver = require('selenium-webdriver'); 

var driver = new webdriver.Builder(). 
    usingServer('http://localhost:4444/wd/hub'). 
    withCapabilities(webdriver.Capabilities.chrome()). 
    build(); 

driver.get('http://www.google.com'); 
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver'); 
driver.findElement(webdriver.By.name('btnG')).click(); 
driver.wait(function() { 
return driver.getTitle().then(function(title) { 
    return title === 'webdriver - Google Search'; 
}); 
}, 1000); 

driver.quit(); 

... nhưng đã nhận lỗi

promise.js:1542 
     throw error; 
      ^
UnknownError: 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 
    at new bot.Error (/Users/maks/Dropbox/nodeApps/orgi/node_modules/selenium-webdriver/lib/atoms/error.js:109:18) 

Tôi guessed để đặt biến PATH:

$ cat .bashrc 

export PATH=$PATH:/usr/local/git/bin/ 
export PATH=$PATH:~/bin 
export PATH=$PATH:~/Dropbox/chromedriver 

Và khởi động lại bàn điều khiển nhưng có cùng lỗi.

+0

Tôi đã phải sử dụng Firefox để có được kết thúc để kiểm tra kết thúc để làm việc trên Linux bằng cách sử dụng thước đo góc. – Droogans

Trả lời

42

Sử dụng selen-server-standalone- * .jar từ here, bạn có thể vượt qua webdriver.chrome.driver tài sản khi khởi chạy nó như vậy:

java -jar selenium-server-standalone-2.35.0.jar -Dwebdriver.chrome.driver="D:\dev\chromedriver.exe" 

này giúp loại bỏ các lỗi; Tùy chọn dòng lệnh Java -Dproperty=value đặt giá trị thuộc tính hệ thống như mong đợi.

+0

bạn không cần phải thoát khỏi những dấu gạch chéo ngược? – kajacx

+1

@kajacx: ​​cú pháp ở trên là chính xác cho một dòng lệnh "vanilla" khởi chạy –

+0

Tôi biết đó là bài cũ nhưng giải pháp này đã hữu ích cho tôi sau khi di chuyển từ Behat 2 sang Behat 3 đã phàn nàn về chromedriver. +1 – BentCoder

-2

Bạn có thể sử dụng đoạn mã sau để thiết lập đường dẫn trong mã của bạn

System.setProperty("webdriver.chrome.driver", "your_path"); 

Đường dẫn được đề cập trong dấu ngoặc kép.

+4

Không thể hoạt động với các nút. – CodeGuru

2

Nếu bạn không muốn sử dụng máy chủ selen nhưng chỉ muốn sử dụng chromedriver trực tiếp, một cái gì đó như thế này sẽ làm việc:

var chrome = require('selenium-webdriver/chrome'); 
var service = new chrome.ServiceBuilder(__dirname + '/node_modules/.bin/chromedriver').build(); 
var driver = new chrome.createDriver(capabilities, service); 

Nó không phải là rất tốt tài liệu, tôi phải poke quanh nguồn mã một chút.

+0

Bạn sẽ sử dụng điều này như thế nào trong khi vẫn có khả năng sử dụng 'chrome.Options()'? –

0

Giải pháp đơn giản nhất tôi tìm thấy là làm cho tệp chromedriver có thể thực thi được.

Sai:

**-rw-rw-r--** 1 user user 5560736 Jul 31 00:56 chromedriver 

Đúng:

**-rwxrwxr-x** 1 user user 58204704 Aug 14 08:18 phantomjs 

phantomjs Khi chromedriver phù hợp nó mọc lại cuộc sống

5

Chỉ trong trường hợp một ai nhận được lỗi này:

Exception in thread "main" com.beust.jcommander.ParameterException: Unknown option: -Dwebdrive

này thread có thể giúp:

Sử dụng thông số trước khi file jar

java [-options] -jar jarfile [args...] (to execute a jar file) 

Vì vậy, lệnh của bạn nên là:

java -jar -Dwebdriver.chrome.driver="D:\dev\chromedriver.exe" selenium-server-standalone-2.35.0.jar 

Hy vọng nó sẽ giúp ai đó trong tương lai.