Wenn ich meine Tests bei der Arbeit durchführe, ist der Browser aus irgendeinem Grund maximiert, aber wenn ich sie zu Hause ausführe, wird nur ein Browserfenster mit einer Breite von etwa 50% geöffnet. Dies führt zu Unstimmigkeiten beim Herunterscrollen usw. Es wäre ideal, wenn ich auf jedem Rechner, auf dem die Tests ausgeführt werden, ein Browserfenster derselben Größe öffnen möchte. Was ist der beste Weg dies zu tun? (Ich habe einige Antworten für andere Sprachen gefunden, konnte sie jedoch nicht an Javascript anpassen.)
Hinzufügen
browser.executeScript('window.moveTo(0,0);'+
'window.resizeTo(screen.width, screen.height);');
tut nichts (anscheinend werden window.moveTo
und window.resizeTo
von Chrome nicht unterstützt).
Sie können die Standardbrowsergröße festlegen, indem Sie Folgendes ausführen:
var width = 800;
var height = 600;
browser.driver.manage().window().setSize(width, height);
So maximieren Sie den Browser-Fensterlauf:
browser.driver.manage().window().maximize();
Positionslauf setzen:
var x = 150;
var y = 100;
browser.driver.manage().window().setPosition(x, y);
Wenn Sie einen Fehler erhalten:
WebDriverError: unknown error: operation is unsupported with remote debugging
Vorgang wird nicht unterstützt, wenn Remote-Debugging verwendet wird. Einige WebDriver Befehle (z. B. Ändern der Browser-Fenstergröße) erfordern eine Chrome-Erweiterung in den Browser geladen werden. ChromeDriver lädt normalerweise diese "Automatisierungserweiterung" bei jedem Start einer neuen Chrome-Sitzung.
ChromeDriver kann jedoch angewiesen werden, eine Verbindung zu einem vorhandenen .__ herzustellen. Chrome-Sitzung, anstatt eine neue zu starten. Dies geschieht mit 'debuggerAddress' im Capabilities-Objekt (auch als ChromeOptions-Objekt bezeichnet) . Da die Automatisierungserweiterung nur beim Start geladen wird, gibt es Einige Befehle, die ChromeDriver bei der Arbeit mit .__ nicht unterstützt. bestehende Sitzungen durch Remote-Debugging.
Wenn der Fehler "Vorgang nicht unterstützt, wenn Remote Debugging verwendet wird" angezeigt wird, versuchen Sie, den Test neu zu schreiben, sodass ein neuer Chrome .__ gestartet wird. Session. Dies kann durch Entfernen von 'debuggerAddress' aus der .__ durchgeführt werden. Capabilities-Objekt.
Sie können auch Ihren config.js
verwenden, um die Fenstergröße einzustellen:
// config.js
specs: [
...
],
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--window-size=800,600'] // THIS!
}
}
// ....
Wenn die bevorzugte Methode:
browser.driver.manage().window().maximize();
funktioniert für Sie nicht (zum Beispiel Ausführen von Protractor-Tests in Xvfb), dann können Sie das Fenster auch auf diese Weise maximieren (protractor.conf.js):
onPrepare: function() {
setTimeout(function() {
browser.driver.executeScript(function() {
return {
width: window.screen.availWidth,
height: window.screen.availHeight
};
}).then(function(result) {
browser.driver.manage().window().setSize(result.width, result.height);
});
});
},
TypeScript-Version:
import {Config, browser} from "protractor";
export let config: Config = {
...
onPrepare: () => {
setTimeout(() => {
browser.driver.executeScript<[number, number]>(() => {
return [
window.screen.availWidth,
window.screen.availHeight
];
}).then((result: [number, number]) => {
browser.driver.manage().window().setSize(result[0], result[1]);
});
});
}
};
Ich habe einfach den untenstehenden Code in meine Datei protractor.conf.js eingefügt, und es hat gut funktioniert.
onPrepare: function() {
var width = 1600;
var height = 1200;
browser.driver.manage().window().setSize(width, height);
},
Welchen Zweck haben setTimeout und executeScript in Ihrer Antwort? Ich bemühe mich, Best Practices in den Winkelmesser-Dokumenten zu finden ...
Die direkte Verwendung von maximize () ist meines Erachtens eine schlechte Idee und sollte nicht die bevorzugte Methode sein, da sie nicht auf jeder Maschine, auf der die Tests ausgeführt werden, dieselbe Größe festlegen würde und das Reaktionsverhalten beeinträchtigen könnte.
In Selen 4 (Winkelmesser 6) ersetzt setRect
setSize
und setPosition
Zum Beispiel,
browser.driver.manage().window().setRect({height: 600, width: 800});
Fügen Sie in der Datei Protractor.conf.js die folgende Konfiguration hinzu
fähigkeiten: { 'browserName': 'chrome', chromeOptions: { args: [ 'start-maximized' ] } }