javascript - node - Cómo establecer el tamaño predeterminado de la ventana del navegador en Transportador/WebdriverJS
selenium webdriver javascript (4)
Puede configurar el tamaño predeterminado del navegador ejecutando:
var width = 800;
var height = 600;
browser.driver.manage().window().setSize(width, height);
Para maximizar la ejecución de la ventana del navegador:
browser.driver.manage().window().maximize();
Para establecer la ejecución de la posición:
var x = 150;
var y = 100;
browser.driver.manage().window().setPosition(x, y);
Si obtiene un error:
WebDriverError: unknown error: operation is unsupported with remote debugging
La operación no es compatible cuando se usa la depuración remota Algunos comandos de WebDriver (por ejemplo, cambiar el tamaño de la ventana del navegador) requieren una extensión de Chrome para cargarse en el navegador. ChromeDriver normalmente carga esta "extensión de automatización" cada vez que inicia una nueva sesión de Chrome.
Sin embargo, se puede indicar a ChromeDriver que se conecte a una sesión de Chrome existente en lugar de iniciar una nueva. Esto se hace usando ''debuggerAddress'' en el objeto Capabilities (aka ChromeOptions). Dado que la extensión de automatización solo se carga al inicio, hay algunos comandos que ChromeDriver no admite cuando se trabaja con sesiones existentes a través de la depuración remota.
Si ve el error "operación no admitida al usar la depuración remota", intente reescribir la prueba para que inicie una nueva sesión de Chrome. Esto se puede hacer eliminando ''debuggerAddress'' del objeto Capabilities.
Por alguna razón, cuando ejecuto mis pruebas en el trabajo, el navegador está maximizado, pero cuando las ejecuto en mi casa solo abre una ventana del navegador de aproximadamente 50% de ancho. Esto ocasiona algunas discrepancias con el desplazamiento hacia abajo, etc., por lo que me gustaría que se abra una ventana del mismo tamaño en cada máquina en la que se ejecutan las pruebas. ¿Cuál es la mejor manera de hacer esto? (He encontrado algunas respuestas para otros idiomas pero no he podido adaptarlas a javascript)
Añadiendo
browser.executeScript(''window.moveTo(0,0);''+
''window.resizeTo(screen.width, screen.height);'');
no hace nada (aparentemente window.moveTo
y window.resizeTo
no son compatibles con chrome).
Si el método preferido:
browser.driver.manage().window().maximize();
no funciona para usted (por ejemplo, ejecutando pruebas de transportador en Xvfb), entonces también puede maximizar la ventana de esta manera (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);
});
});
},
Versión de TypeScript:
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]);
});
});
}
};
Simplemente agregué el siguiente código en mi archivo protractor.conf.js y funcionó bien.
onPrepare: function() {
var width = 1600;
var height = 1200;
browser.driver.manage().window().setSize(width, height);
},
¿Para qué sirve setTimeout y executeScript en su respuesta? Me cuesta encontrar las mejores prácticas en los documentos del transportador ...
En mi opinión, usar directamente maximizar () es una mala idea y no debería ser el método preferido, ya que no establecería el mismo tamaño en todas las máquinas donde se ejecutan las pruebas y podría romper comportamientos receptivos.
También puede usar su config.js
para establecer el tamaño de la ventana:
// config.js
specs: [
...
],
capabilities: {
browserName: ''chrome'',
chromeOptions: {
args: [''--window-size=800,600''] // THIS!
}
}
// ....