Chrome sin cabeza con selenium, solo puede encontrar maneras de desplazarse sin cabeza

Hay mucho que encontrar sobre este tema, pero no puedo resolverlo. Necesito desplazarme hasta el final de la página de un desplazamiento infinito (no tan largo). Tengo 2 opciones que funcionan con Chrome sin cabeza, pero no parece funcionar sin cabeza.

El primero que más me gustó, funciona hermoso y se encuentra aquí en SA:

driver = webdriver.Chrome('c:/cd.exe', chrome_options=chrome_options) driver.get('http://www.website.com') while True: count = len(driver.find_elements_by_xpath('//div[@itemprop="itemListElement"]')) print(count) driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") try: WebDriverWait(driver, 50).until(EC.visibility_of_element_located((By.XPATH, "//div[@itemprop='itemListElement'][%s]" % str(count + 1)))) except TimeoutException: break 

Segundo trabajo de pirateo más después de darme cuenta de que no puedo salir adelante en el modo sin cabeza:

 driver = webdriver.Chrome('c:/cd.exe', chrome_options=chrome_options) driver.get('https://www.website.com') while True: count = len(driver.find_elements_by_xpath('//div[@itemprop="itemListElement"]')) actions = ActionChains(driver) actions.send_keys(Keys.PAGE_DOWN) actions.perform() actions.send_keys(Keys.PAGE_DOWN) actions.perform() # focus_element_scroll = driver.find_elements_by_xpath('//section[@class="occasion-content"]') # driver.find_elements_by_xpath('//div[@itemprop="itemListElement"]')[-1].send_keys(Keys.PAGE_DOWN) # driver.find_elements_by_xpath('//div[@itemprop="itemListElement"]')[-1].send_keys(Keys.PAGE_DOWN) # self.driver.find_element_by_css_selector("ul.list-with-results").send_keys(Keys.ARROW_DOWN) print(count) # driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") try: WebDriverWait(driver, 50).until(EC.visibility_of_element_located((By.XPATH, "//div[@itemprop='itemListElement'][%s]" % str(count + 1)))) except TimeoutException: break 

Así que ambos trabajan en Chrome pero no en modo sin cabeza, necesito empujarlos a un ubuntu vps donde deben estar sin cabeza, conozco la opción xvfb pero me alegro de haber podido eliminar eso y usar Chrome nativo desde las gotas. No tengo mucha memoria.

Edit: solo probé este enfoque con un enfoque en un elemento en el pie de página, también funciona en no-sin cabeza pero no en sin cabeza:

     ActionChains(driver).move_to_element(focus[0]).perform() 

    Alguien tiene un enfoque diferente?

    Editar ¡ Solo quiere saber si es posible desplazarse con Chrome en modo sin cabeza!

    Encontré la respuesta después de 2 días probando diferentes combinaciones de versiones de selenium, cromo y chromedriver. Alsmost casi me rendí y quise ir con el xvfb.

    Ya intenté maximizar la ventana en los argumentos de Chrome, eso no ayudó. Pero esta vez intenté establecer un tamaño de ventana manual. Eso ayudó.

      chrome_options.add_argument("window-size=1920,1080") 

    Publicar aquí para que el siguiente no tome tanto tiempo como yo.

    Para scroll hasta el end of the page de un desplazamiento infinito (no tan largo) a través del Default Chrome Browser y el Headless Chrome Browser , puede usar el siguiente bloque de código:

     from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException options = Options() options.add_argument("--headless") options.add_argument("start-maximized") options.add_argument("disable-infobars") options.add_argument("--disable-extensions") driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get('http://www.website.com') while (driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")): try: WebDriverWait(driver, 50).until(EC.visibility_of_element_located((By.XPATH, "//div[@itemprop='itemListElement']" ))) # do your other actions within the Viewport except TimeoutException: break print("Reached to the bottom of the page")