2014-02-11 29 views
1

我下面这个教程 http://engineering.wingify.com/posts/e2e-testing-with-webdriverjs-jasmine/自动化的端到端测试 - WebDriverJS,茉莉花

第一部分要求创造testfile.js

VAR的webdriver =需要( '硒的webdriver');

var driver = new webdriver.Builder(). 
    withCapabilities(webdriver.Capabilities.chrome()). 
    build(); 

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

我能够让浏览器运行,当我运行节点testfile.js

我创建testfile.js

$猫testfile.js

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

var driver = new webdriver.Builder(). 
    withCapabilities(webdriver.Capabilities.chrome()). 
    build(); 

describe('basic test', function() { 
    it('should be on correct page', function() { 
     driver.get('http://www.wingify.com'); 
     driver.getTitle().then(function(title) { 
      expect(title).toBe('Wingify'); 
     }); 
    }); 
}); 

我到了这个部分,你跑茉莉花节点

$ jasmine-node testfile.js 

Finished in 0 seconds 
0 tests, 0 assertions, 0 failures, 0 skipped 

预期的行为是它启动浏览器,但这不是我所经历的。

+0

Wingify博客文章继续解释为什么您需要添加'done',所以您发布的代码示例并不是真的应该起作用。不过,你应该看到一个浏览器正在启动。 –

回答

4

尝试jasmine-node --matchall testfile.jsjasmine-node testfile.spec.js,默认情况下茉莉节点搜索包含“规范”中的文件名的文件。

+0

谢谢。他们不告诉你这个http://webdriver.io/ –

+0

这是记录在https://www.npmjs.com/package/jasmine-node#usage –

0

我有同样的事情。 driver.getTitle()是异步的,因此Jasmine在任何返回之前完成。我尝试了几个使用driver.wait()但不能获得异步权限的东西。

最后我用茉莉花waitsFor - 这也是在等待一个真正的结果,也有它自己的定制超时。

我下面的例子稍微复杂一些,因为我打开谷歌,然后做一个搜索检查结果页面标题。

有了这个例子中,你不需要设置全局茉莉花超时,这对我来说没有反正工作。

describe('basic test', function() { 

    it('should search for webdriver and land on results page', function() { 
     var match = 'webdriver - Google Search', 
      title = ''; 

     driver.get("http://www.google.com"); 
     driver.findElement(webdriver.By.name("q")).sendKeys("webdriver"); 
     driver.findElement(webdriver.By.name("btnG")).click(); 

     // wait for page title, we know we are there 
     waitsFor(function() { 
      driver.getTitle().then(function (_title) { 
       title = _title; 
      }); 
      return title === match; 
     }, 'Test page title, so we know page is loaded', testTimeout); 

     // test title is correct 
     runs(function() { 
      expect(title).toEqual(match); 
     }); 
    }); 
}); 

waitsFor轮询,直到返回真实结果,此时执行以下运行()。对我来说,似乎没多久,特别是因为它进行了两次比较,一次是为了等待,另一次是为了茉莉花的断言。

我做了另外一个例子采用摩卡,而不是茉莉花,使用断言库,确实有这个问题。

+0

嗨,如果你愿意,它会有很大的帮助可以指向一些链接,它提供了Web驱动程序/茉莉花/硒Web UI测试的教程/ API参考。 –