2017-02-24 25 views
8

ile Webdriver testlerini çalıştırma Merhaba Selenium-webdriver'den yararlanan tepki uygulamam için mocha testleri yazmaya çalışıyorum.Önceden yapılandırılmış ChromeDriver hizmeti hala çalışıyor/Grunt

Birkaç sorum var ama bunların ilerisinde yardımcı olabilmek için yardımcı olacaklar. Her şeyden

  1. Birincisi, ideal olarak, ben onlar koşmak hangi sırayla umurumda değil çünkü benim farklı testler arasında aynı webdriver oturumları paylaşmak istiyorum. Sadece bir kez web sayfasını yüklemek, tüm testleri çalıştırmak ve daha sonra web sayfasını kapatmak istiyorum. Mümkün mü? İlk önce ve sonra bir tanımın dışında farklı bir dosyada durumlarımı koydum ve iyi çalışıyordu ... ama daha sonra test dosyalarının herhangi birinde sürücünün örneğine erişemedim.

    $ grunt test-e2e 
    Running "mochatest:e2e" (mochatest) task 
    Running Mocha tests on files 
    /Users/userName/Desktop/myReactApp/tests/e2e/testSpecOne.js 
    /Users/userName/Desktop/myReactApp/tests/e2e/testSpecTwo.js 
    
    Error: The previously configured ChromeDriver service is still running. You must shut it down before you may adjust its configuration. 
        at Error (native) 
        at Object.setDefaultService (/Users/userName/Desktop/myReactApp/node_modules/selenium-webdriver/chrome.js:264:11) 
        at Object.<anonymous> (/Users/userName/Desktop/myReactApp/tests/e2e/testSpecTwo.js:8:8) 
        at Module._compile (module.js:556:32) 
        at loader (/Users/userName/Desktop/myReactApp/node_modules/babel-register/lib/node.js:144:5) 
        at Object.require.extensions.(anonymous function) [as .js] (/Users/userName/Desktop/myReactApp/node_modules/babel-register/lib/node.js:154:7) 
        at Module.load (module.js:473:32) 
        at tryModuleLoad (module.js:432:12) 
    
    : Aynı oturumu paylaşımı mümkün değilse

  2. sonra nasıl İşte

hatadır .. İki specFiles çalıştırmayı denediğinizde hata aşağıda oluşuyor çözebilir

tipik bir test şu şekildedir: Ben bu testler conf çalıştırmak için bir hırıltı-mocha-testi kullanıyorum

import assert from 'assert'; 
import test from 'selenium-webdriver/testing'; 
import webdriver, {By, until} from 'selenium-webdriver'; 
import chrome from 'selenium-webdriver/chrome'; 
import chromedriver from 'chromedriver'; 
import helpers from './helpers.js'; 

chrome.setDefaultService(new chrome.ServiceBuilder(chromedriver.path).build()); 


test.describe('Main page',() => { 

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

    test.before(() => { 
     helpers.launchTheApp(driver, 'http://localhost:8000/myApp', 'elementOne', 10000); 
    }); 

    test.after(() => { 
    helpers.closeTheApp(driver); 
    }) 

    test.it('Test some items appear',() => { 

    helpers.checkIfElementIsPresent(driver, By.className, 'elementOne'); 
    helpers.checkIfElementIsPresent(driver, By.className, 'elementTwo'); 
    helpers.checkIfElementIsPresent(driver, By.className, 'elementThree'); 

    }); 
}); 

Bu

e2e:{ 
    options: { 
     timeout: 3000000, 
     ignoreLeaks: true, 
     ui: 'bdd', 
     run: true, 
     log: true, 
     reporter: typeof process.env.FUSION_BUILD_GENERATED === 'undefined' ? 'spec' : 'xunit-file', 
     grep: grunt.option('grep') 
    }, 
    src: ['tests/e2e/**/**/*Spec.js'] 
} 

cevap

-1

olası bir çözüm gibi igured (Docker kaplarda örneğin) izole ortamlarda oturumları çalıştırmaktır. Bununla birlikte, standart Selenium ile bunu başarmaya çalışmak karmaşıktır - konteynırları manuel olarak başlatmanız ve durdurmanız veya Ansible gibi bir altyapı otomasyon aracını kullanmanız gerekir. İşte burada Selenoid adlı yeni bir Selenium uyumlu aracın devreye girdiği yer. Sadece testinizde iki ayrı seans talep edin ve Docker konteynerleri içinde paralel olarak çalışacaklar. Bu size çok fazla esneklik sağlar. Hakkında konuşmam: https://www.youtube.com/watch?v=TGjpc32my0Y

İlgili konular