Estoy tratando de crear un script de prueba de navegador cruzado Python-Selenium. Por lo tanto, necesito que todos los resultados sean iguales sin importar qué webdriver (Chrome o IE) utilizo. Puedo configurar el tamaño de la ventana del navegador de la siguiente manera:

driver.set_window_size(1920, 1080)

Pero el siguiente código devolverá diferentes valores para Chrome y IE:

element = driver.find_element_by_xpath('some_xpath')
element.location

Los tamaños de área de visualización (donde se muestra el contenido web) son diferentes (Chrome - 1910x998, IE - 1904x965) a pesar del mismo tamaño de ventana. Para obtener estos valores utilicé

driver.execute_script('return document.documentElement.clientHeight')
driver.execute_script('return document.documentElement.clientWidth')

Así que intenté

driver.execute_script('document.documentElement.clientHeight = "990px";')
driver.execute_script('document.documentElement.clientWeight = "1900px";')

Pero sin suerte

Entonces, la pregunta es cómo configurar el tamaño de la ventana gráfica del navegador en selenium.

10
Andersson 12 may. 2016 a las 11:31

3 respuestas

La mejor respuesta

Aquí está la función para establecer el tamaño de la ventana gráfica:

def set_viewport_size(driver, width, height):
    window_size = driver.execute_script("""
        return [window.outerWidth - window.innerWidth + arguments[0],
          window.outerHeight - window.innerHeight + arguments[1]];
        """, width, height)
    driver.set_window_size(*window_size)

Uso:

from selenium import webdriver

driver = webdriver.Chrome()

# set the viewport size to 800 x 600
set_viewport_size(driver, 800, 600)

# display the viewport size
print driver.execute_script("return [window.innerWidth, window.innerHeight];")
9
Florent B. 12 may. 2016 a las 09:49

Aquí está la versión Java para @Florent B. respuesta:

        int width = "500";
        int height = "500";

        //Remove the window from fullscreen (optional), if it s in fullscreen the outerHeight is not accurate
        browser.manage().window().setSize(new Dimension(800,800));

        JavascriptExecutor js= (JavascriptExecutor)browser;

        String windowSize = js.executeScript("return (window.outerWidth - window.innerWidth + "+width+") + ',' + (window.outerHeight - window.innerHeight + "+height+"); ").toString();

        //Get the values
        width = Integer.parseInt(windowSize.split(",")[0]);
        height = Integer.parseInt(windowSize.split(",")[1]);

        //Set the window
        browser.manage().window().setSize(new Dimension(width, height));
0
Yohan Dahmani 14 jun. 2019 a las 09:14

Estoy usando esto:

driver.manage().window().setSize(new org.openqa.selenium.Dimension(1900, 990));

Donde 1900 es el ancho y 990 es la altura.

0
Ranjith's 12 may. 2016 a las 09:35