Lo siento si esto se ha preguntado y respondido. Hice una búsqueda, pero salió vacía.En un entorno de visualización de múltiples monitores, ¿cómo le digo a Selenium qué pantalla abrir para abrir una nueva ventana?
Respuesta
Es muy útil para la depuración ejecutar pruebas en un monitor secundario. Desafortunadamente no se puede especificar en qué monitor se debe abrir el navegador. Las opciones son:
- Abra el navegador y arrástrelo al monitor deseado, luego ciérrelo. La próxima vez se abrirá en ese monitor
- Use software como Ultramon para controlar en qué monitor iniciar el navegador.
También puede utilizar una máquina virtual que se ejecutará en el segundo monitor, simplemente arrástrelo allí.
Mi solución es instalar un servidor VNC, abrir el VNC en uno de los monitores e iniciar el selenio a través del VNC. Entonces siempre tiene un monitor para los navegadores de selenio sin las molestas ventanas abiertas cada vez que se inicia una prueba
Interesante ... –
En OSX Mavericks puede asignar destop desde el menú Opciones al hacer clic y mantener presionado el icono desde la base. Esto resolvió mi problema.
Eres un salvavidas. – codemon
dos opciones (esto es para el coypuc# envoltorio):
utilizar los comandos de la ventana de posicionamiento del conductor Selenio:
var monitor = Screen.FromPoint(new Point(Screen.PrimaryScreen.Bounds.Right + 1, Screen.PrimaryScreen.Bounds.Top)); var seleniumDriver = new ChromeDriver(options); seleniumDriver.Manage().Window.Position = new Point(monitor.Bounds.X, monitor.Bounds.Y); var coypuDriver = new MultimonWebDriver(seleniumDriver, Browser.Chrome); var rv = new BrowserSession(sessionConfiguration, coypuDriver);
configurar el controlador con un argumento de línea de comandos. Prefiero esto porque la solución # 1 se produce un parpadeo desde el servidor del controlador que muestra la ventana antes de procesar el comando de movimiento:
var monitor = Screen.FromPoint(new Point(Screen.PrimaryScreen.Bounds.Right + 1, Screen.PrimaryScreen.Bounds.Top)); var options = new ChromeOptions(); options.AddArgument(String.Format("--window-position={0},{1}", monitor.Bounds.X, monitor.Bounds.Y)); var seleniumDriver = new ChromeDriver(options); var coypuDriver = new MultimonWebDriver(seleniumDriver, Browser.Chrome); var rv = new BrowserSession(sessionConfiguration, coypuDriver);
donde MultimonWebDriver es simplemente exponiendo el acceso al constructor protected:
public class MultimonWebDriver : SeleniumWebDriver
{
public MultimonWebDriver(IWebDriver webDriver, Browser browser) : base(webDriver, browser)
{
}
}
Si está ejecutando Windows 7 o posterior, puede (hack-ishly) lograr esto configurando la pantalla deseada como su pantalla principal en "Cambiar configuración de pantalla". Cualquier nueva ventana del navegador ahora se abrirá en este. Tenga en cuenta que esto, por supuesto, afecta su barra de herramientas, etc., que puede ser molesto o no. Sin duda es menos molesto que tener ventanas del navegador lanzadas a tu cara de manera constante.
Utilizo este método no muy elegante pero rápido para lograrlo. Como no solo lo quiero en mi segunda pantalla sino que también lo maximizo, no tengo que ser demasiado preciso con las coordenadas.Cualquier coordenada X por encima de 2000 es por lo general en la segunda pantalla para todas mis máquinas dev: (En este ejemplo se utiliza chromedriver pero funciona con cualquier IWebDriver)
chrome = new ChromeDriver();
chrome.Manage().Window.Position = new System.Drawing.Point(2000, 1); // To 2nd monitor.
chrome.Manage().Window.Maximize();
en Python:
browser = webdriver.Chrome()
browser.set_window_position(2000, 0)
Para Java :
//imports:
import java.awt.*;
import java.awt.event.InputEvent;
driver = new FirefoxDriver();
//drag & drop to my right screen in debug mode:
boolean isDebug = java.lang.management.ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("jdwp") >= 0;
if(isDebug) {
Robot robot = new Robot();
robot.mouseMove(800, 10);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(2800, 100);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
driver.manage().window().maximize();
}
driver.manage().window().setPosition(point);
no funcionó para mí.
Muevo la ventana del navegador al segundo monitor y lo maximizo allí (vea el código a continuación). Tengo 2 monitores de 1920x1080.
//// 1. Get screen resolution
java.awt.Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();
if (width <= 1920) {
//// 2. Move browser to second monitor and maximize
Point point = new Point(width, 0);
driver.manage().window().setPosition(point);
driver.manage().window().maximize();
} else {
//// 3. If your resolution is wider than a typical monitor,
//// open the browser in a more realistic resolution
Point point = new Point(0, 0);
driver.manage().window().setPosition(point);
Dimension targetWindowSize;
targetWindowSize = new Dimension(1920, 1080);
driver.manage().window().setSize(targetWindowSize);
}
me he dado cuenta de que mediante el establecimiento de estas cosas de abajo, mi navegador se abre todos los días en el mismo monitor (tengo dos monitores de la EDP y un monitor HDMI secundaria). Tal vez tiene que ver con la posición:
# console log
d = desired_capabilities.DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' }
# Driver
self.driver = webdriver.Chrome(desired_capabilities=d)
self.driver.implicitly_wait(5) # seconds
self.driver.set_window_size(800, 800)
self.driver.set_window_position(0, 0)
En realidad, esta es una forma bastante sencilla de hacerlo. Hay un método llamado 'set_window_position' que acepta valores negativos. Así que quería que el navegador se abriera en mi pantalla izquierda, por lo que un simple pixelado negativo de 1000px lo arrastró lo suficiente para que la ventana de maximización escogiera la pantalla de la izquierda.
driver.set_window_position(-1000, 0)
driver.maximize_window()
Así que dependiendo de los tamaños de pantalla y donde quiera que vaya, hacer algunos cálculos y sólo tienes que arrastrar allí!
Fuente: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.firefox.webdriver (recogido Firefox para este ejemplo)
me di cuenta de que para mí es siempre la apertura en el monitor principal. Así que cambié la pantalla principal de la ventana de opciones de configuración de visualización de OSX.
- 1. cómo abrir una nueva pantalla en Android?
- 2. ¿Abrir el botón en una ventana nueva?
- 3. Eclipse: Abrir en una nueva ventana
- 4. Abrir la imagen en una nueva ventana
- 5. Abrir respuesta en una nueva ventana
- 6. Abrir una nueva ventana en silverlight
- 7. ¿Cómo puedo abrir un enlace en una nueva ventana?
- 8. abrir una nueva ventana en a4j: commandButton
- 9. Cómo abrir una nueva ventana de applet desde un applet
- 10. Abrir página en una nueva ventana sin ventana emergente
- 11. ¿Cómo abrir una nueva ventana en Windows Forms en .NET?
- 12. Crear un botón de tweet sin abrir una nueva ventana
- 13. Javascript Publicar en el formulario Enviar abrir una nueva ventana
- 14. Java Abrir una nueva ventana haciendo clic en un botón
- 15. Cómo abrir una nueva ventana en el modo independiente de iphone (pantalla completa)
- 16. Cómo abrir una nueva ventana en el formulario enviar
- 17. Cómo abrir en una ventana nueva usando el control WebBrowser?
- 18. ¿Cómo abrir una nueva ventana e insertar html usando jQuery?
- 19. Cómo abrir una nueva ventana usando MVVM Light Toolkit
- 20. Detectar ancho de pantalla para monitores múltiples
- 21. Abrir el enlace en una nueva ventana con Jquery
- 22. ¿Cómo llego JavaScript para abrir una ventana emergente en la pantalla actual
- 23. ASP.NET MVC abrir archivo pdf en una nueva ventana
- 24. Abrir una nueva ventana de solicitud/terminal desde Java
- 25. Abrir un hilo de Python en una nueva ventana de consola
- 26. Mediawiki abrir enlaces externos en una nueva ventana
- 27. Ejecución de pantalla completa de VNC con monitores múltiples
- 28. enlace URL informe Abrir en una nueva ventana en blanco
- 29. GVim: Abrir en una nueva pestaña
- 30. Cómo abrir Outlook nueva ventana de correo C#
Mi SUT (sistema bajo prueba) abre una nueva ventana en ciertos puntos de mi escenario de prueba. Tengo tres monitores y quería enviarlo a un monitor diferente. Oh bien. La técnica que finalmente establecí para forzar en qué monitor se abre la aplicación es usar Preferencias del sistema de mi Macbook -> pantalla para establecer qué ventana es la ventana principal. Iba por defecto a mi computadora portátil (demasiado pequeña) y cada vez que saltaba una ventana, aparecía allí. Al hacer que una de mis pantallas grandes sea la ventana principal, ahora todo aparece allí. Gracias por las respuestas –