Selenium 4 및 크롬 드라이버, 전체 페이지 스크린샷 찍기

나는 전체 페이지 스크린샷을 얻으려고 Selenium 4를 가지고 놀면서 시간을 보냈습니다. 이것이 내가 찾은 것입니다.
  • Chrome 드라이버의 devtools 프로토콜을 사용합니다
  • .
  • 이것은 driver.execute_cdp_cmd(command, parameters)에 의해 수행됩니다.
  • 명령은 Page.captureScreenshot
  • 매개변수가 문서화됨here
  • 까다로운 매개변수는 clip

  • # I am assuming we already have a driver object.
    
    # We need the dimensions of the content
    page_rect = driver.execute_cdp_cmd('Page.getLayoutMetrics', {})
    
    # parameters needed for ful page screenshot
    # note we are setting the width and height of the viewport to screenshot, same as the site's content size
    screenshot_config = {'captureBeyondViewport': True,
                                 'fromSurface': True,
                                 'clip': {'width': page_rect['contentSize']['width'],
                                          'height': page_rect['contentSize']['height'],
                                          'x': 0,
                                          'y': 0,
                                          'scale': 1},
                                 }
    # Dictionary with 1 key: data
    base_64_png = driver.execute_cdp_cmd('Page.captureScreenshot', screenshot_config)
    
    # Write img to file
    with open("imageToSave.png", "wb") as fh:
        fh.write(base64.urlsafe_b64decode(base_64_png['data'))
    
    


    내가 이 글을 쓰는 이유는?



    DevTools 프로토콜과 관련된 좋은 문서가 없으며 이 문서를 작성할 당시 Selenium 4에서 셀레늄에 대한 통합이 계속 진행 중입니다.

    나는 이것이 잃어버린 영혼을 돕기를 바랍니다.

    좋은 웹페이지 즐겨찾기