2013-08-28 60 views
1

我正在使用簡單的NodeJS腳本來測試google.com。使用phantomJS瀏覽器。錯誤消息:無法在phantomsJS中找到xpath的元素

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

var driver = new webdriver.Builder(). 
withCapabilities({ 
    browserName : "phantomjs" 
}). 
usingServer('http://127.0.0.1:4444/wd/hub').build(); 

//driver.manage().timeouts().implicitlyWait(60000); 

driver.get('http://www.google.com'); 
driver.findElement(webdriver.By.xpath('//*[@id="gbqf"]')).sendKeys('webdriver'); 
driver.findElement(webdriver.By.name('btnG')).click(); 
driver.getTitle().then(function(title) { 
    assert.equal("webdriver - Google Search", title); 
}); 

driver.quit(); 

運行使用

> java -jar selenium-server-standalone-2.35.0.jar 

運行腳本使用並行命令node獨立硒服務器。

我收到以下錯誤

> timers.js:103 
>    if (!process.listeners('uncaughtException').length) throw e; 
>                  ^UnknownError: Error Message => 'Unable to find element with xpath 
> '//*[@id="gbqf"]'' caused by Request => 
> {"headers":{"Accept":"application/json, 
> image/png","Connection":"Keep-Alive","Content-Length":"45","Content-Type":"application/json; 
> charset=utf-8","Host":"localhost:17476"},"httpVersion":"1.1","method":"POST","post":"{\"using\":\"xpath\",\"value\":\"//*[@id=\\\"gbqf\\\"]\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/440b8b90-0fc8-11e3-8024-5bdaea20ab82/element"} 
> Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 
> 15:42:01' System info: os.name: 'Linux', os.arch: 'i386', os.version: 
> '2.6.18-8.el5', java.version: '1.6.0_16' Driver info: driver.version: 
+0

我使用Ruby綁定硒..它工作 –

+0

@Babai HTML是相同的[http://google.co.in](http://google.co.in) –

回答

0

是否有機會在網頁尚未完全載入,因爲我知道,當我去到google.com,它重定向我到我的本地google.co.uk現場。

嚴格地說,爲了調試目的,在findElement命令之前放置5秒的睡眠。如果那樣的話,用webdriverWait替換,直到對象出現在屏幕上。

但是,我也注意到你正在向「form」元素髮送密鑰。這會工作嗎?你不想把密鑰發送到輸入字段嗎?

+0

我試過這個' 。driver.manage()超時()implicitlyWait(60000);'。但沒用。我也嘗試過截圖。截圖是正確生成的。 –

+0

您是否嘗試過通過driver.getPageSource打印HTML? –

+0

是的,我能夠毫不拖延地獲得HTML。 –

0

斷言在調用findElement命令之前,您確實在使用您希望使用的URL。

+1

或更好的單頁面應用程序:製作截圖或轉儲頁面內容。 –

相關問題