2014-02-11 3 views
1

나는 testfile.js에게 =이 ('셀레늄 webdriver')를 필요로 webdriver자동 E2E, 재스민

VAR를 만드는이 튜토리얼을 http://engineering.wingify.com/posts/e2e-testing-with-webdriverjs-jasmine/

첫 부분 호출을 다음 해요;

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

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

은 내가 노드가

내가

$ 고양이

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'); 
     }); 
    }); 
}); 

I를 testfile.js testfile.js을 만들 testfile.js 실행할 때 실행하는 브라우저를 얻을 수 있었다 재스민 노드를 실행하는이 부분으로 이동

$ jasmine-node testfile.js 

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

브라우저가 시작되지만 예상치 못한 결과가 발생할 것으로 예상됩니다.

+0

Wingify 블로그 포스트는 왜 당신이'done'을 추가해야하는지 설명함으로써 계속됩니다. 그래서 게시 한 코드 샘플은 실제로 작동하지 않아야합니다. 그래도 브라우저가 실행되어야합니다. –

답변

2

당신은 호출하여 시간 제한 값을 늘려야합니다 :

jasmine.DEFAULT_TIMEOUT_INTERVAL = 9999999; 

this example gist를 살펴 보자 (내가 여기 WebdriverIO를 사용).

4

jasmine-node --matchall testfile.js 또는 jasmine-node testfile.spec.js을 시도하십시오. 기본적으로 jasmine-node는 파일 이름에 "spec"이 포함 된 파일을 검색합니다.

+0

감사합니다. http://webdriver.io/에서이 사실을 알려주지 않습니다. –

+0

https://www.npmjs.com/package/jasmine-node#usage –

0

나는 똑같은 것을 가지고 있었다. driver.getTitle()은 비동기식이므로 Jasmine은 아무 것도 반환되기 전에 완료됩니다. driver.wait()를 사용하여 여러 가지를 시도했지만 비동기 권한을 얻을 수 없습니다.

결국 나는 Jasmine waitsFor를 사용했습니다. 이것은 참된 결과를 기다리거나, 자신 만의 시간 초과입니다.

아래 예제는 약간 더 복잡합니다. Google을로드 할 때 검색을 수행 한 다음 검색 결과에서 페이지 제목을 확인하십시오.

이 예제에서는 글로벌 Jasmine 시간 초과를 설정할 필요가 없습니다. 어쨌든 저에게 적합하지 않았습니다.

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); 
     }); 
    }); 
}); 

true 결과가 반환 될 때까지 기다리십시오. 그 시점에서 다음과 같은 runs()가 실행됩니다. 그것은 특히 나에게 두 배의 비교를하고있는 것처럼 나를 위해 오래 그리워하는 것 같습니다. 한 번은 대기하고 재스민 주장을 다시합니다.

나는 assert 라이브러리를 사용하여 jasmine 대신 mocha를 사용하는 또 다른 예제에서 이런 문제가 발생했습니다.

+0

안녕하십니까, 도움이 될 것입니다. 웹 드라이버/jasmine/selenium 웹 UI 테스트에 대한 자습서/API 참조를 제공하는 링크를 가리킬 수 있습니다. –