釘釘機器人發送消息-selenium截圖

1.   後臺數據通過vue生成,形成report.html頁面

2.   python,selenium截圖並裁減圖片

3.   上傳阿里雲OSS,返回URL

4.   釘釘post機器人消息,消息中嵌入圖片url

# -*- coding:utf-8 -*-
from selenium import webdriver
from time import sleep
import time
import os
import oss2
import datetime
import requests,json
import imgkit
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import sys
from datetime import datetime, date, timedelta
from collections import OrderedDict
from string import Template
import sys
reload(sys)
from PIL import Image

def oss(img_key, img_path):
    
    auth = oss2.Auth('replace_your_self', 'replace_your_self')
    bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', 'test')
    endpoint = 'http://oss-cn-beijing.aliyuncs.com'
    bucket = oss2.Bucket(auth, endpoint, 'test')
    res = bucket.put_object_from_file(img_key, img_path)
    url = bucket.sign_url('GET', 'report', 90000)
    return url
    print("upload success!")
    

dingdingurl = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxx"
def postdingding(posturl): 
        HEADERS = {"Content-Type":"application/json ;charset=utf-8"}
        print("![screenshot]("+ posturl+ ")")
        data ={"actionCard":{"title":"robot send message",                    
                     "text":"![screenshot]("+  posturl +")",
                     "hideAvatar":"0","btnOrientation":"0"},                    
   	    "msgtype":"actionCard"}
        String_textMsg = json.dumps(data)
        print(data)
        print(url)
        res = requests.post(dingdingurl, data=String_textMsg, headers=HEADERS)
        print(res.text)

def main():
    chrome_options = Options()
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=chrome_options)
    driver.maximize_window()
    driver.set_window_size(1800,900)
    driver.get("http://your_server_ip/report.html")
    time.sleep(10)
    driver.get_screenshot_as_file('/usr/local/nginx/report.png')
    # 要截屏的目標元素
    element = driver.find_element_by_class_name("app-container")
    print(element.location)
    print(element.size)
    # 獲取element的頂點座標
    xPiont = element.location['x']
    yPiont = element.location['y']
    # 獲取element的寬、高
    element_width = xPiont + element.size['width']
    element_height = yPiont + element.size['height']

    picture = Image.open('/usr/local/nginx/report.png')

    '''
    crop()--  一個顯式的參數:一個4元組
      Image.crop(box=None):圖像返回一個矩形區域,box是一個四元組 限定所述左,上,右,和下像素座標
      參數:box--裁剪矩形,作爲(左,上,右,下)-tuple;返回類型:Image;返回:一個Image對象
      所以你應該重寫它:
      img.crop((414,122,650,338))
      #        ^    4-tuple    ^
    '''
    picture = picture.crop((xPiont, yPiont, element_width, element_height))
    picture.save("/usr/local/nginx/report.png")
    time.sleep(5)
    driver.close()
main()
img_path = '/usr/local/nginx/report.png'
url = oss('report', img_path)
postdingding(url)

通過這種方式發送的圖片會被自動縮小,我們可以改用markdown的方式,直接嵌入圖片url,這樣獲取到的便是原始圖片。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章