2016-04-01 7 views
3

Wenn ich die Funktion aufrufen:Wie legen Sie die innere Fenstergröße/Ansichtsfenstergröße des Browsers fest?

browser.driver.manage().window().setSize(1000, 1000); 

Er setzt meine Fenstergröße zu 1000x1000 und mein inneren Fenster/Darstellungsgröße zu 990x918. Unter der inneren Fenstergröße verstehe ich den Teil des Fensters, der tatsächlich den Inhalt enthält, z. B. keine Fensterrahmen oder Registerkarten. In diesem Fall habe ich einen 5-Pixel-Rand auf jeder Seite und dann einen Wert von 82 Pixel für URL- und Tab-Balken, die ich berücksichtigen möchte.

Ich möchte die innere Fenstergröße so einstellen, dass ich möglicherweise nicht spezifisch für den Computer erklären muss, der die Tests durchführt, sollte es zufällig eine zusätzliche Symbolleiste zum Beispiel haben.

Gibt es einen Winkelmesserbefehl zum Einstellen der Größe des eigentlichen inneren, inhaltsgefüllten Teils des Fensters?


Wie weiter unten auf der Antwort basiert, habe ich dies den onPrepare Abschnitt meiner conf:

protractor.setViewportSize = function(width, height){ 
    const JS_GET_PADDING = "return {" 
     + "w: window.outerWidth - window.innerWidth," 
     + "h: window.outerHeight - window.innerHeight };"; 

    browser.executeScript(JS_GET_PADDING).then(function(pad){ 
     browser.manage().window().setSize(width + pad.w, height + pad.h); 
    }); 
}; 

Und im Test, nenne ich so etwas wie:

protactor.setViewportSize(1440, 1000); 

Antwort

3

I glaube nicht, dass es eine eingebaute Methode gibt, um das Ansichtsfenster auf eine bestimmte Größe zu skalieren. Dies kann jedoch durch Einstellen einer Außengröße erfolgen, die der angepeilten Innengröße entspricht:

var webdriver = require('./node_modules/protractor/node_modules/selenium-webdriver'); 

// extension method to set the inner size 
webdriver.WebDriver.prototype.setViewportSize = function(width, height){ 
    const JS_GET_PADDING = "return {" 
    + "w: window.outerWidth - window.innerWidth," 
    + "h: window.outerHeight - window.innerHeight };"; 

    var self = this; 
    self.executeScript(JS_GET_PADDING).then(function(pad){ 
    self.manage().window().setSize(width + pad.w, height + pad.h); 
    }); 
}; 

// start the browser 
var driver = new webdriver.Builder().withCapabilities({browserName: 'firefox'}).build(); 

// set the window inner size to 800 x 600 
driver.setViewportSize(800, 600); 

// quit 
driver.sleep(5000); 
driver.quit(); 
+0

Vielen Dank! Das hat mein Problem perfekt gelöst. – user2020347

Verwandte Themen