Windows 下自动化调用浏览器访问网站截图 2024-08-15 13:25:41 Steven Xeldax 自动化截图用于对网站的页面的检测,截图的代码如下: ``` import base64 import pyautogui import webbrowser from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys import time import traceback from flask import Flask, request, jsonify from gevent import pywsgi api = Flask(__name__) @api.route('/api/windows/screen_shot', methods=['POST']) def windows_screen_shot(): r = request.get_json() print(r) url = r.get('url','') if not url: return jsonify({ 'status': -1, 'result': None }) driver = webdriver.Chrome() driver.set_page_load_timeout(10) driver.maximize_window() try: driver.get(url) time.sleep(5) except: traceback.print_exc() # screenshot screenshot = pyautogui.screenshot() screenshot.save("screenshot.png") file_handle = open("screenshot.png","rb") data = base64.b64encode(file_handle.read()).decode() file_handle.close() # close browser try: driver.close() except: traceback.print_exc() return jsonify({ 'status': 1, 'result': data }) @api.route('/api/windows_phone/screen_shot', methods=['POST']) def windows_phone_screen_shot(): r = request.get_json() print(r) url = r.get('url','') if not url: return jsonify({ 'status': -1, 'result': None }) mobile_emulation = { "deviceName": "Pixel 7", # "deviceMetrics": {"width": 414, "height": 896, "pixelRatio": 3.0}, "userAgent": "Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36" } chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("mobileEmulation", mobile_emulation) # driver = webdriver.Chrome(options=chrome_options) driver = webdriver.Chrome() driver.set_page_load_timeout(10) driver.maximize_window() time.sleep(2) pyautogui.doubleClick() pyautogui.hotkey( 'ctrl' , 'shift' , 'i' ) time.sleep(2) pyautogui.hotkey( 'ctrl' , 'shift' , 'm' ) time.sleep(2) try: driver.get(url) driver.refresh() time.sleep(5) except: traceback.print_exc() screenshot = pyautogui.screenshot() screenshot.save("screenshot.png") file_handle = open("screenshot.png", "rb") data = base64.b64encode(file_handle.read()).decode() file_handle.close() # close browser try: driver.close() except: traceback.print_exc() return jsonify({ 'status': 1, 'result': data }) # api.run('0.0.0.0',port=8080) server = pywsgi.WSGIServer(('0.0.0.0',8080), api) server.serve_forever() ``` 如果使用windows desktop需要将会话保留在后台,不然你RDP退出后没有中桌面显示。在一切代码部署完成后使用如下命令: > tscon.exe 0 /dest:console 第二数字是当前的session,使用query user或者qwinsta 获取session