2014-02-11 3 views
1

Я следую этой обучающей программы http://engineering.wingify.com/posts/e2e-testing-with-webdriverjs-jasmine/Автоматизированная испытания- WebDriverJS e2e, Жасмин

Первые звонки часть для создания testfile.js

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

I добраться до этой части, где вы запускаете жасминовый узел

$ 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, выполняю поиск, а затем проверяю заголовок страницы на результатах.

В этом примере вам не нужно устанавливать глобальный тайм-аут жасмина, который для меня все равно не работал.

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

Ожидаетс. Для опросов, пока не будет возвращен истинный результат, в этот момент выполняются следующие прогоны(). Мне кажется, что для меня это очень долгое время, особенно когда он дважды сравнивает сравнение, один раз для ожидания и снова для утверждения жасмина.

Я сделал еще один пример, используя мокку вместо жасмина, используя библиотеку assert, у вас была эта проблема.

+0

Привет, это будет очень полезно, если вы может указать мне на какую-то ссылку, которая предоставляет ссылку на учебник/api для веб-тестирования/тестирования веб-драйвера/jasmine/selenium. –