Estoy tratando de ejecutar un código que se desplaza hacia abajo por un div interno hasta un determinado elemento. Eso solo funciona si:

Options().headless = False

Pero como ustedes saben, eso no es bueno para el desempeño de todo.

El código que hace el scroll es:

element = driver1.find_element_by_xpath(reference)
driver1.execute_script("arguments[0].scrollIntoView();", element)

¿Cómo puedo hacer algo así, pero con el sin cabeza es igual a Verdadero?

2
gusta 1 sep. 2020 a las 05:36

1 respuesta

La mejor respuesta

scrollIntoView() debe funcionar de forma idéntica independientemente de Options().headless = True o Options().headless = False.

Sin embargo, al usar el modo , debe:

  • Maximizar la ventana de navegación

    options = Options()
    options.add_argument("--headless")
    options.add_argument("window-size=1400,600")
    
  • Además, induzca WebDriverWait para visibility_of_element_located() de la siguiente manera:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "reference")))
    driver.execute_script("arguments[0].scrollIntoView();", element)
    

Referencias

Puede encontrar una discusión detallada relevante en:

0
DebanjanB 1 sep. 2020 a las 13:54