2016-08-21 79 views
0

我是Selenium的新手,也是Node.js的新手。我已經完成了npm安裝,並將chromedriver和geckodriver放在我的PATH目錄中。我在Mac OS X上運行「節點cheese.js」,我立刻得到:Selenium Webdriver Node.js

cheese.js:1 
(function (exports, require, module, __filename, __dirname) { var driver = new webdriver.Builder().build(); 

ReferenceError: webdriver is not defined 
    at Object.<anonymous> (/Users/bjbarouch/Sites/cheese.js:1:80) 
    at Module._compile (module.js:409:26) 
    at Object.Module._extensions..js (module.js:416:10) 
    at Module.load (module.js:343:32) 
    at Function.Module._load (module.js:300:12) 
    at Function.Module.runMain (module.js:441:10) 
    at startup (node.js:139:18) 
    at node.js:974:3 

作爲參考,奶酪代碼:

var driver = new webdriver.Builder().build(); 
driver.get('http://www.google.com'); 

var element = driver.findElement(webdriver.By.name('q')); 
element.sendKeys('Cheese!'); 
element.submit(); 

driver.getTitle().then(function(title) { 
    console.log('Page title is: ' + title); 
}); 

driver.wait(function() { 
    return driver.getTitle().then(function(title) { 
     return title.toLowerCase().lastIndexOf('cheese!', 0) === 0; 
    }); 
}, 3000); 

driver.getTitle().then(function(title) { 
    console.log('Page title is: ' + title); 
}); 

driver.quit(); 

回答

0

這個錯誤顯然不是因爲chromedriver或geckodriver路徑問題。它抱怨無法解決webdriver。 我對JavaScript代碼也不是很熟悉。 但很確定你需要導入webdriver模塊告訴cheese.js關於webdriver。

編輯:下面是工作腳本。 步驟: 將在路徑chromedriver二進制 1.安裝Node.js的能夠運行JavaScript,它也將在某些文件在目錄安裝NPM 2.複製下面的腳本 3. cd this dir 4. npm install selenium-webdriver 5.節點scirpt.js

var webdriver = require('selenium-webdriver'); 
var driver = new webdriver.Builder() 
    .forBrowser('chrome') 
    .build(); 

driver.get('http://www.google.com'); 

var element = driver.findElement(webdriver.By.name('q')); 
element.sendKeys('Cheese!'); 
element.submit(); 

driver.getTitle().then(function(title) { 
    console.log('Page title is: ' + title); 
}); 

driver.wait(function() { 
    return driver.getTitle().then(function(title) { 
    return title.toLowerCase().lastIndexOf('cheese!', 0) === 0; 
    }); 
}, 3000); 

driver.getTitle().then(function(title) { 
    console.log('Page title is: ' + title); 
}); 

driver.quit(); 

運行此腳本之前,您需要安裝硒的webdriver包。這個運行:npm install selenium-webdriver

+0

鑑於這是Selenium網站上的示例的複製和粘貼,我不知道它意味着它找不到webdriver。在JavaScript中沒有包含或導入的東西,並且沒有任何跡象表明任何以前的腳本應該被預先添加到我所展示的代碼中。因此,我不知道該如何解決它。 –

+0

當我遵循其他在線示例,並從 開始selenium = require(「selenium-webdriver」); 即使它位於PATH上,我也會收到有關未找到chrome二進制文件的其他錯誤消息。 –

+0

我更新了包含javascript工作示例的答案。你說得對,我們需要(「selenium-webdriver」),這相當於導入告訴腳本關於webdriver模塊。我能夠執行腳本,它啓動谷歌並搜索奶酪。參考:http://seleniumhq.github.io/selenium/docs/api/javascript/index.html –

0

好了 - 這裏是在Node.js的背景下requried如果您已經安裝在非標準位置谷歌Crhome:

var webdriver = require('selenium-webdriver'); 
var chrome = require('selenium-webdriver/chrome'); 
var co = new chrome.Options(); 
co.setChromeBinaryPath("/Applications/UsrBin/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"); 
var driver = new webdriver.Builder() 
    .forBrowser("firefox") 
    .setChromeOptions(co) 
    .build(); 

console.log("hello"); 
driver.quit(); 

如果我說爲什麼它的工作原理forBrowser(「firefox」)但崩潰,如果我不?

build()和設置瀏覽器選項的完整指南的URL是什麼?

+0

可能應該是對帖子的編輯和/或可能的其他一些問題。也是T.A.的女婿的「hi」。 –