from selenium import webdriver import time def take_screenshot(url, save_fn="capture.png"): browser = webdriver.Firefox() # Get local session of firefox browser.set_window_size(1200, 900) browser.get(url) # Load page 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); })(); """) for i in xrange(30): if "scroll-done" in browser.title: break time.sleep(10) browser.save_screenshot(save_fn) browser.close() if __name__ == "__main__": take_screenshot("https://www.qcc.com/firm/75ea1cf905f30cf36b02e84d7ad46fcd.html")
时间: 2024-02-10 21:33:40 浏览: 161
selenium webdriver学习
这段代码使用了 Selenium 自动化测试工具,通过 Python 脚本打开 Firefox 浏览器,加载指定的网页,然后执行 JavaScript 代码模拟鼠标滚动操作,以便将页面所有内容全部加载完毕,最后截取整个页面的屏幕截图并保存。具体来说,这段代码实现了一个函数 take_screenshot,它接收两个参数,一个是要截取屏幕截图的网页 URL,另一个是保存屏幕截图的文件名。在函数内部,首先创建了一个 Firefox 浏览器的实例,设置了浏览器窗口大小为 1200x900,然后通过 browser.get() 方法加载指定的网页,接着通过 browser.execute_script() 方法执行了一段 JavaScript 代码,该代码模拟了鼠标滚动操作以便将页面所有内容全部加载完毕。在循环中,每隔 10 秒钟检查一次页面是否已经加载完毕,如果加载完毕则跳出循环,否则继续等待。最后通过 browser.save_screenshot() 方法将整个页面的屏幕截图保存到指定的文件名中。在代码的最后,通过 if __name__ == "__main__": 判断是否在主程序中运行,如果是的话则直接调用 take_screenshot() 函数来执行截图操作。
阅读全文