2015-01-31 2 views
2

У меня есть рабочий WebDriver Javascript тестовый скрипт для моего HTML-страницы, которая работает с использованием ChromeDriver без необходимости запуска с селеном автономный сервер:Могу ли я запустить функциональный тест с использованием инфраструктуры jns без поддержки автономного сервера selenium?

test.js

'use strict'; 

var path = require('path'); 
var webdriver = require('selenium-webdriver'); 
var chrome = require('selenium-webdriver/chrome'); 

var options = new chrome.Options(); 
var logging_prefs = new webdriver.logging.Preferences(); 
logging_prefs.setLevel(webdriver.logging.Type.BROWSER, webdriver.logging.Level.ALL); 
options.setLoggingPrefs(logging_prefs); 

var driver = new webdriver.Builder().withCapabilities(options.toCapabilities()).build(); 

driver.get('file://' + path.resolve('./index.html')); 
// Do some testing 
driver.quit(); 

Я хочу портировать тест для использования theintern.io, но я бы предпочел не запускать автономный сервер selenium. Это возможно?

[Редактировать: Добавить информацию на ошибки и Стажёр конфигурации]

Я вижу ошибку [POST http://localhost:4444/wd/hub/session] connect ECONNREFUSED который я предполагаю, потому что я не имею автономный запустить сервер.

Мой Стажёр конфигурации выглядит следующим образом:

define({ 
    environments: [ 
    { browserName: 'chrome' } 
    ], 

    // Name of the tunnel class to use for WebDriver tests 
    tunnel: 'NullTunnel', 

    // Non-functional test suite(s) to run in each browser 
    suites: [ /* 'myPackage/tests/foo', 'myPackage/tests/bar' */ ], 

    // Functional test suite(s) to run in each browser once non-functional tests are completed 
    functionalSuites: [ 'tests/functional/index' ], 

    // A regular expression matching URLs to files that should not be included in code coverage analysis 
    excludeInstrumentation: /^(?:tests|node_modules)\// 
}); 

Мой Стажёр тест выглядит следующим образом:

define([ 
    'intern!object', 
    'intern/chai!assert', 
    'require' 
], function (registerSuite, assert, require) { 
    registerSuite({ 
    name: 'index', 

    'first test': function() { 
     return this.remote 
     .get(require.toUrl('index.html')) 
     ... //more test logic 
    } 
    }); 
}); 
+0

Итак, чтобы уточнить, вы уже используете ChromeDriver или ваша существующая тестовая среда запускает сервер ChromeDriver при запуске тестов? –

+0

Я не запускаю отдельный сервер или что-то в этом роде. Я установил последнюю версию ChromeDriver с использованием варева, и я запускаю скрипт test.js, используя 'node test.js', и он просто работает. Насколько я понимаю, я напрямую подключаюсь к ChromeDriver и не прохожу через java-процесс selenium server (я использовал [эти] (https://code.google.com/p/selenium/wiki/WebDriverJs#Getting_Started) инструкции) , – robd

ответ

1

Intern говорит стандартный протокол WebDriver поэтому может быть использован с любым сервером, который реализует спецификацию, не только Селен. В этом случае, если вы пытаетесь подключиться к ChromeDriver, убедитесь, что он запущен сначала (chromedriver --port=4444 --url-base=wd/hub), а затем запустите intern-runner config=mid/of/config, и вам должно быть хорошо идти с той конфигурацией, которая у вас есть.

+0

Ah OK Я вижу - это очень полезно - спасибо. Вы знаете, если HTTP-сервер ChromeDriver запущен под капотом в моем исходном скрипте, когда я вызываю 'new webdriver.Builder() ... build()'? Я не думаю, что это полностью исключает HTTP и просто вызывает API-интерфейс ChromeDriver. Поддерживает ли theintern что-то подобное, или может ли он только управлять API-интерфейсом webdriver через HTTP? – robd

+0

[Спецификация WebDriver] (https://w3c.github.io/webdriver/webdriver-spec.html) предусматривает использование HTTP для связи (раздел 2.1). Вы можете написать туннель [Dig Dug] (https://github.com/theintern/digdug), который запускает локальные процессы. Если вы это сделаете, отправьте запрос на растяжение! :) –

+0

Спасибо за ссылку. На данный момент я использую Protractor с опцией «directConnect: true», что устраняет необходимость запуска отдельного HTTP-сервера. Если у меня появится шанс, я могу взглянуть на то, что было бы связано с добавлением режима directConnect к theintern, но на данный момент Protractor, похоже, выполняет эту работу. – robd