2017-07-06 59 views
1

我目前只使用Chrome(驅動程序)進行測試。我想用Firefox和Safari來測試它。一個接一個,它不能平行。在多個瀏覽器上運行測試(按順序)

這裏是我的一口任務開始測試:

gulp.task('test', function() { 
    return gulp.src('*test/features/*').pipe(cucumber({ 
    'steps': '*test/features/steps/*.js' 
    })); 
}); 

簡單功能文件:

Feature: UI 
    Testing UI 

    Scenario: Check the title of the page 
     When I open the homepage 
     Then I should see "Test - IntApp" in the title 

而且文件:

const chrome = require('selenium-webdriver/chrome'); 
const webdriver = require('selenium-webdriver'); 
const assert = require('assert'); 


module.exports = function() { 
    let options = new chrome.Options(); 
    options.addArguments('start-maximized'); 

    var driver = new webdriver.Builder() 
    .forBrowser('chrome') 
    .setChromeOptions(options) 
    .build(); 

    this.When('I open the homepage', function (done) { 
     driver.get('http://intapp.dev/').then(done); 
    }); 

    this.Then('I should see "Test - IntApp" in the title', function (done) { 
     driver.getTitle().then(function(title) { 
      assert.equal(title, "Test - IntApp"); 
     }).then(done); 
    }); 


    this.registerHandler('AfterFeatures', function (features) { 
     return driver.quit(); 
    }); 
}; 

我想着也許我可以通過作爲參數的瀏覽器的名字從某種程度上來源於吞噬任務,但它似乎不可能。

+0

*一前一後,它不能並行*是相當不尋常的要求。出於好奇,爲什麼? –

+0

@AlexBlex服務器控制一些定製硬件,以便外部硬件的狀態與每次測試所期望的相同,測試需要按順序運行。 – Cornwell

回答

1

因爲我想要做的測試順序,這是我想出了:

gulp.task('test', function(cb) { 
    runSequence(
    'test-chrome', 
    'test-firefox', 
    cb); 
}); 

gulp.task('test-chrome', function(cb) { 
    return gulp.src('*test/features/*').pipe(cucumber({ 
     'steps': '*test/features/steps/*.js', 
     'support': '*test/support/chrome.js' 
    })); 
}); 

gulp.task('test-firefox', function(cb) { 
    return gulp.src('*test/features/*').pipe(cucumber({ 
     'steps': '*test/features/steps/*.js', 
     'support': '*test/support/firefox.js' 
    })); 
}); 
0

我在想,也許我可以通過瀏覽器的名字作爲參數 不知何故從gulp任務,但它似乎不可能。

請記住,每個瀏覽器都有自己的驅動程序,每個驅動程序需要以自己的方式創建/初始化。

如果按照您計劃的方向行進,您可以在數組中保留所有瀏覽器句柄(在創建它們之後),然後按名稱將所需的一個句柄拉出來。

1

編寫一個bash或批處理腳本並創建一個安裝文件。

在安裝文件中,您可以設置一個可以通過腳本進行更改的變量(通過編輯該行),然後將其傳遞到聲明您將使用哪個驅動程序的位置。

該腳本將一個接一個地運行它們,但它們將是不同的套件(如果使用JSON或HTML輸出創建不同的報告)。

這就是我一直在做跨瀏覽器自動化的一段時間。

首選是使用bash而不是批處理,因爲bash可以在Mac,UNIX和Windows 10上運行,但批處理主要是Windows(來自內存,我認爲它只是Windows)。

如果您需要從哪裏開始的指導,根據要求我會給你一個提綱,但我應該給你足夠的信息來研究如何去做。

相關問題