nodejs中的selenium-webdriver不返回当前标题

我正在通过selenium驱动程序的例子,它没有工作。 几个月前,它工作得很好,所以我想知道如果我做错了什么,或者如果testing方法已经改变。

var assert = require('assert'), test = require('selenium-webdriver/testing'), webdriver = require('selenium-webdriver'); var By = webdriver.By; test.describe('Google Search', function() { test.it('should work', function(done) { var driver = new webdriver.Builder(). withCapabilities(webdriver.Capabilities.chrome()). build(); driver.get("http://www.google.com"); driver.findElement(By.name("q")).sendKeys("webdriver"); driver.findElement(By.name("btnG")).click(); driver.getTitle().then(function(title) { assert.equal("webdriver - Google Search", title); done(); }); driver.quit(); }); }); 

输出是:

 AssertionError: "webdriver - Google Search" == "Google" Expected :"Google" Actual :"webdriver - Google Search" 

这告诉我,该网页尚未更新,但我不知道为什么。 这个例子显示在这里: https : //code.google.com/p/selenium/wiki/WebDriverJs#Getting_Started

来自package.json的Selenium版本:2.39.0

更新

我也应该说,testing正在通过摩卡进行。 摩卡是罪魁祸首吗? 当我最后一次尝试使用茉莉花时。

直接从文档中的示例中 ,使用wait

 driver.wait(function() { return driver.getTitle().then(function(title) { return title === 'webdriver - Google Search'; }); }, 1000); 

为什么你需要使用等待? 因为Google网页的工作是asynchronous的。 input密钥后,服务器发送响应并更新页面可能需要一些时间。

你也应该删除done 。 虽然在一般情况下,您需要它进行asynchronoustesting,但是Selenium的webdriver的这个版本的音序器似乎会阻塞在所有的动作执行之前。 文档中的这个示例不使用它。

另外,如果您想知道为什么没有断言:如果在超时过期时发生超时exception,您将知道testing失败。