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 浏览: 176
这段代码使用了 Selenium 自动化测试工具,通过 Python 脚本打开 Firefox 浏览器,加载指定的网页,然后执行 JavaScript 代码模拟鼠标滚动操作,以便将页面所有内容全部加载完毕,最后截取整个页面的屏幕截图并保存。具体来说,这段代码实现了一个函数 take_screenshot,它接收两个参数,一个是要截取屏幕截图的网页 URL,另一个是保存屏幕截图的文件名。在函数内部,首先创建了一个 Firefox 浏览器的实例,设置了浏览器窗口大小为 1200x900,然后通过 browser.get() 方法加载指定的网页,接着通过 browser.execute_script() 方法执行了一段 JavaScript 代码,该代码模拟了鼠标滚动操作以便将页面所有内容全部加载完毕。在循环中,每隔 10 秒钟检查一次页面是否已经加载完毕,如果加载完毕则跳出循环,否则继续等待。最后通过 browser.save_screenshot() 方法将整个页面的屏幕截图保存到指定的文件名中。在代码的最后,通过 if __name__ == "__main__": 判断是否在主程序中运行,如果是的话则直接调用 take_screenshot() 函数来执行截图操作。
相关问题
from selenium import webdriver from selenium.webdriver.chrome.options import Options options=Options() options.add_argument('--headless')#设置无窗口模式 options.add_argument('--disable-gpu')#禁用gpu加速 # chrome浏览器的文件路径 path=r'C:\Program Files\Google\Chrome\Application\chrome.exe' options.binary_location=path br=webdriver.Chrome(chrome_options=options) url='https://www.baidu.com' br.get(url) br.save_screenshot('baidu.png')
您的代码看起来已经配置得很好,使用了`--headless`参数和禁用GPU加速的选项来设置无窗口模式。您还指定了Chrome浏览器的可执行文件路径。
您的代码应该能够在无窗口模式下运行,并且不会显示浏览器窗口。它会打开一个无界面的Chrome浏览器实例,访问百度网站,并保存网页截图为`baidu.png`。
如果您仍然在运行代码时看到浏览器窗口,请确保以下几点:
1. 检查Chrome浏览器和Chrome WebDriver的版本是否匹配。您可以通过在命令行中运行`chrome://version`来查看Chrome浏览器的版本。然后确保下载并使用与该版本匹配的Chrome WebDriver。
2. 确保您的Chrome浏览器可执行文件路径正确。请确保`path`变量指向正确的Chrome浏览器可执行文件路径。
3. 检查您的代码是否有其他操作导致浏览器窗口显示出来。请检查在创建WebDriver实例后的其他代码,确保没有执行任何打开浏览器窗口的操作。
如果您仍然遇到问题,请提供更多详细信息,以便我可以更好地帮助您解决问题。
from selenium import webdriver from time import sleep from aip import AipOcr import re APP_ID = '32948455' API_KEY = 'Ojs6MOUb8b19VVqiVHhEckgH' SECRET_KEY = 'xV7i3uPcugk0DB3GdonK4cgiqMiGt6vd' client = AipOcr(APP_ID,API_KEY,SECRET_KEY) browser = webdriver.Chrome('D:\Pycharm\PyCharm 2020.3.5\chromedriver.exe') browser.get('http://jwcmis.hnie.edu.cn/') username = '' password = '' #browser.find_element_by_id('username').click() browser.find_element_by_id('userAccount').send_keys(username) sleep(1) #browser.find_element_by_id('password').click() browser.find_element_by_id('userPassword').send_keys(password) sleep(1) ele_vcode = browser.find_element_by_id('SafeCodeImg') ele_vcode.click() sleep(1) ele_vcode.screenshot('vcode3.png') with open(r'D:\Pycharm\PyCharm 2020.3.5\pythonProject\venv\Scripts\vcode3.png','rb') as f: image = f.read() data = str(client.basicGeneral(image)).replace(" ","") pat = re.compile(r"{'words':'(.*?)'}") result = pat.findall(data)[0] browser.find_element_by_id('RANDOMCODE').send_keys(result) browser.find_element_by_id('btn-login').click()解析这段代码
这段代码是一个自动化脚本,用于模拟用户登录教务系统。主要使用了selenium和百度AI的OCR识别技术。具体步骤如下:
1. 导入必要的库:selenium、time、aip
2. 初始化百度AI的OCR客户端
3. 启动Chrome浏览器,并打开教务系统登录页面
4. 输入用户名和密码
5. 获取验证码图片元素,并截图保存到本地
6. 读取验证码图片,并使用OCR技术识别验证码
7. 将识别结果填入验证码输入框
8. 点击登录按钮,完成登录操作
阅读全文