2014-02-11 64 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參考。 –