2015-11-12 35 views
5

tôi sử dụng tài sản này để xác định chiều rộng và chiều cao màn hình của:thước đo: Kích thước màn hình

var width = 1280; 
var height = 600; 
browser.driver.manage().window().setSize(width, height); 

Trong phương pháp onPrepare() nhưng mã này là chức năng cho một số xét nghiệm, không phải cho tất cả chúng. Tại sao vậy? Tôi không xác định lại kích thước của màn hình trong các bài kiểm tra của mình.

Kính trọng,

Johnny

Edit: phiên bản của tôi về Node là 0.10.33 với Protactor 2.5.1.

conf thước đo của:

// Fichier de configuration pour Angular 

exports.config = { 
    sauceUser: "", 
    sauceKey: "", 

    capabilities: { 
     'browserName': 'chrome', 
     'name': 'Protractor Circle CI' 
    }, 

    specs: ["src/Bg/*Bundle/Tests/Angular/*Test.js"], 
    exclude: ['src/Bg/*Bundle/Tests/Angular/*AuthTest.js', 'src/Bg/*Bundle/Tests/Angular/*RapideTest.js'], 

    baseUrl: "http://bluegrey.circle.dev:8080/app_ci.php", 

    onPrepare: function() { 
     browser.driver.get('http://bluegrey.circle.dev:8080/app_ci.php/fr_FR/login'); 

     browser.driver.findElement(by.id('username')).sendKeys('[email protected]'); 
     browser.driver.findElement(by.id('password')).sendKeys('userpass'); 
     browser.driver.findElement(by.id('_submit')).click(); 

     return browser.driver.wait(function() { 
      return browser.driver.getCurrentUrl().then(function(url) { 
       return /dashboard/.test(url); 
      }); 
     }, 600000); 

     var width = 1280; 
     var height = 600; 
     browser.driver.manage().window().setSize(width, height); 
    }, 

    jasmineNodeOpts: { 
     showColors: true, 
     defaultTimeoutInterval: 30000 
    } 
}; 

Một ví dụ về thử nghiệm mà hoạt động:

describe("Carrière > Centre d'interêt", function() { 
    describe("Tests d'ajout et de suppression d'un centre d'interêt", function() { 
     beforeEach(function() { 
      // on compte le nombre d'element 
      elements = element.all(by.css('.bloc__defaut')); 
      elements.count().then(function (nbElementP) { 
       nbElement = nbElementP; 
      }); 
     }, 60000); 

     it('GET /app_ci.php/fr_FR/dashboard/career/interest', function() { 

      browser.get('/app_ci.php/fr_FR/dashboard/career/interest'); 
     }, 60000); 

     it("Ajout du centre d'interêt", function() { 


      // On clique sur ajouter 
      element(by.css('.btn-add-js')).click(); 

      // On remplit le formulaire 
      browser.findElement(by.id('CentreInteret_intitule')).sendKeys('CentreInteret_intitule'); 
      element(by.css('.u-btn-inverse')).click(); 

      // on re-compte le nombre d'element 
      expect(elements.count()).toEqual(nbElement+1); 
     }, 60000); 

     it("Suppression d'un centre d'interêt", function() { 

      // On regarde si toutes les fenetres de suppressions sont cachés au début 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

      // On clique sur supprimer 
      element(by.css('.u-btn-alert')).click(); 

      // On regarde si la fenetre de confirmation de suppression est présente 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeTruthy(); 

      // On clique sur supprimer 
      element(by.css('.btn-supprimer-js')).click(); 

      // On regarde si l'element est caché 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

     }, 60000); 
    }); 
}); 

Và một thử nghiệm mà không:

describe('Carrière > Experience Pro', function() { 
    describe("Tests d'ajout et de suppression d'une experience pro", function() { 
     beforeEach(function() { 
      // on compte le nombre d'element 
      elements = element.all(by.css('.bloc__defaut')); 
      elements.count().then(function (nbElementP) { 
       nbElement = nbElementP; 
      }); 
     }, 60000); 

     it('GET /app_ci.php/fr_FR/dashboard/career/professionalexperiences', function() { 

      browser.get('/app_ci.php/fr_FR/dashboard/career/professionalexperiences'); 
     }, 60000); 

     it('Vérification si lors du clique de la checkbox le champs date se désactive', function() { 
      // On clique sur ajouter 
      element(by.css('.btn-add-js')).click(); 

      // On regarde si par defaut les champs ne sont pas désactivés (= active) 
      expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeFalsy(); 

      // On clique 
      element(by.id('ExperiencePro_enPosteajout')).click(); 

      // On regarde si les champs sont desactivés 
      expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeTruthy(); 

      // On regarde s'ils se redésactive 
      element(by.id('ExperiencePro_enPosteajout')).click(); 
      expect(element(by.id('ExperiencePro_dateFin_day')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_month')).getAttribute('disabled')).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateFin_year')).getAttribute('disabled')).toBeFalsy(); 
     }, 120000); 

     it("Réglage du format de date", function() { 


      // Format mois/année 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_1')).click(); 
      expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy(); 

      // Format année 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_2')).click(); 
      expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeFalsy(); 
      expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy(); 

      // Format année 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_0')).click(); 
      expect(element(by.id('ExperiencePro_dateDebut_day')).isDisplayed()).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateDebut_month')).isDisplayed()).toBeTruthy(); 
      expect(element(by.id('ExperiencePro_dateDebut_year')).isDisplayed()).toBeTruthy(); 


     }, 60000); 

     it("Ajout de l'experience", function() { 


      // On remplit le formulaire 
      browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_day option[value="1"]')).click(); 
      browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_month option[value="12"]')).click(); 
      browser.findElement(protractor.By.css('#ExperiencePro_dateDebut_year option[value="2000"]')).click(); 
      element(by.id('ExperiencePro_enPosteajout')).click(); 
      element(by.id('reglageDate-js')).click(); 
      element(by.id('ExperiencePro_formatDate_0')).click(); 
      browser.findElement(by.id('ExperiencePro_poste-ajout')).sendKeys('ExperiencePro_poste'); 
      browser.findElement(by.id('ExperiencePro_entreprise')).sendKeys('ExperiencePro_entreprise'); 
      browser.findElement(by.id('ExperiencePro_ville')).sendKeys('ExperiencePro_ville'); 

      element(by.css('.u-btn-inverse')).click(); 

      // on re-compte le nombre d'element 
      expect(elements.count()).toEqual(nbElement+1); 
     }, 60000); 

     it("Suppression d'une experience", function() { 

      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

      // On clique sur supprimer 
      element(by.css('.u-btn-alert')).click(); 

      // On regarde si la fenetre de confirmation de suppression est présente 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeTruthy(); 

      // On clique sur supprimer 
      element(by.css('.btn-supprimer-js')).click(); 

      // On regarde si la fenetre affirmant la suppression est apparue 
      expect(element(by.css('.bloc__suppression')).isDisplayed()).toBeFalsy(); 

     }, 60000); 
    }); 
}); 

Chỉnh sửa 2: Đó có lẽ vấn đề của một viewport thay vì vấn đề kích thước màn hình. Tôi đã thử trên Chrome, Firefox, Safari với SauceLabs và cùng một vấn đề.

+1

Ông có thể cung cấp một ví dụ về một đường chuyền và không spec? Phải có điều gì đó xảy ra trong các thử nghiệm đó làm cho kích thước cửa sổ thay đổi: \. Bạn cũng có thể cung cấp 1. Phiên bản Node 2. Protractor Version 3.Cấu hình thước đo góc? –

+0

Cảm ơn bạn đã bình luận. Do đó, tôi đã chỉnh sửa bài đăng của mình! – johnnyevolunium

Trả lời

1

Bạn có thể thử kiểm soát kích thước đã đặt thông qua Tùy chọn Chrome không? Bạn có thể xóa tất cả các khai báo khác cho kích thước đã đặt.

'browserName': 'chrome', 'chromeOptions' : { args: ['--window-size=Width,Height'] },

+0

Cùng một vấn đề, nhưng cảm ơn bạn tôi không biết tùy chọn này – johnnyevolunium

2

Bạn đang thực sự trở về từ onPrepare() chức năng ngay cả trước khi setSize() được gọi là:

onPrepare: function() { 
    browser.driver.get('http://bluegrey.circle.dev:8080/app_ci.php/fr_FR/login'); 

    browser.driver.findElement(by.id('username')).sendKeys('[email protected]'); 
    browser.driver.findElement(by.id('password')).sendKeys('userpass'); 
    browser.driver.findElement(by.id('_submit')).click(); 

    // HERE!! 
    return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
      return /dashboard/.test(url); 
     }); 
    }, 600000); 

    var width = 1280; 
    var height = 600; 
    browser.driver.manage().window().setSize(width, height); 
}, 

Bạn có thể phải loại bỏ các "trở lại", hoặc thiết lập kích thước cửa sổ trình duyệt trước khi nó.

Bạn cũng có thể trả về một lời hứa trả về bởi setSize() - trong trường hợp này protractor sẽ chờ đợi lời hứa để được giải quyết trước khi thực hiện các bài kiểm tra:

return browser.driver.manage().window().setSize(width, height); 

Họ bây giờ thậm chí có "tính năng" này documented:

onPrepare có thể tùy chọn trả lại lời hứa, mà Thước đo sẽ đợi trước khi tiếp tục thực hiện. Điều này có thể được sử dụng nếu việc chuẩn bị liên quan đến bất kỳ cuộc gọi không đồng bộ nào, ví dụ: tương tác với trình duyệt . Nếu không thước đo góc không thể đảm bảo trật tự thực hiện và có thể bắt đầu kiểm tra trước khi chuẩn bị kết thúc.

+0

Cũng phát hiện ra, đó là logic hơn nhưng cùng một vấn đề. Cảm ơn bạn vì tài liệu. – johnnyevolunium

0

Đó là ok với Mac OS X nền tảng:

capabilities: { 
    'browserName': 'chrome', 
    'platform': 'OS X 10.11', 
    'name': 'Protractor Circle CI' 
}, 

Nhưng nó không phải là một giải pháp hoàn hảo, tôi chờ đợi thông báo của bạn

Các vấn đề liên quan