Python-selenium全ページスクリーンショット

1810 ワード

Python Seleniumでブラウザのスクリーンショットを操作する場合、ChromeとFirefox(ネット上ではFirefoxは全ページをカットできると言っていますが、私は成功しませんでした)の下で、スクリーンショットは1画面しかカットできず、全ページのスクリーンショットはできません.PhamtonJSを使用すると、Seleniumがサポートしなくなったため、多くのエラーが発生する可能性があります.その後、ieブラウザを使用すると、全ページのスクリーンショットが可能であることが分かった.
くだらないことは言わないでください.
from selenium import webdriver
def take_screenshot(browser):
    browser.set_window_size(1200, 900)
    #                。
    browser.execute_script("""
        (function () {
            var y = 0;
            var step = 100;
            window.scroll(0, 0);
            function f() {
                if (y < document.body.scrollHeight) {
                    y += step;
                    window.scroll(0, y);
                    setTimeout(f, 100);
                } else {
                    window.scroll(0, 0);
                    document.title += "scroll-done";
                }
            }
            setTimeout(f, 1000);
        })();
    """)
    time.sleep(1)

if __name__ == "__main__":
    driver = webdriver.Ie()
    driver.get('your url')
    take_screenshot(driver)
    driver.driver.save_screenshot('your name'+'.png')
    driver.quit()

具体的には、ブラウザのページを一番下に引いてからスクリーンショットすることを考えています.