如果 Web 驱动程序的无头等于 True,如何执行 "scrollIntoView()" 函数?



我正试图执行一段代码,将内部div向下滚动到某个元素。这只适用于以下情况:

Options().headless = False

但正如你们所知,这对整件事的表现并不好。

进行滚动的代码是:

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

我怎么能做这样的事情,但无头等于True?

scrollIntoView()必须以相同方式工作,而不考虑Options().headless = TrueOptions().headless = False

然而,在使用无头模式时,您需要:

  • 最大化浏览窗口

    options = Options()
    options.add_argument("--headless")
    options.add_argument("window-size=1400,600")
    
  • 另外诱导WebDriverWait等待visibility_of_element_located()如下:

    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)
    

参考

您可以在中找到相关的详细讨论

  • Java中的Selenium在使用无头Chrome时找不到元素

相关内容

  • 没有找到相关文章

最新更新