Randol
2020-12-26T05:22:48+00:00
公司的打卡必须在内网打开一个特定的网站后用公司开发的APP进行扫码登录,用最近学习的python知识写了一个远程打卡工具
工具过程就是等待早上8点后-执行脚本-打开网页-截图二维码-剪裁二维码-使用邮件发送二维码到自己的邮箱-自己掏出手机进行扫码-自动执行打卡过程,最后一个步骤想用airtest实现自动化来着,但是因为公司自己开发的app是不允许调用截图进行扫码的暂时不知道该怎么解决的,可能要学下appium才能自动化
如果自己公司有类似打卡机制的同学可以改一改自己用
工具过程就是等待早上8点后-执行脚本-打开网页-截图二维码-剪裁二维码-使用邮件发送二维码到自己的邮箱-自己掏出手机进行扫码-自动执行打卡过程,最后一个步骤想用airtest实现自动化来着,但是因为公司自己开发的app是不允许调用截图进行扫码的暂时不知道该怎么解决的,可能要学下appium才能自动化
如果自己公司有类似打卡机制的同学可以改一改自己用
#conding utf-8
from selenium import webdriver
from time import sleep
import time,datetime
from PIL import Image
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.header import Header
from email.mime.application import MIMEApplication
starttime = datetime.datetime(2020,12,30,13,17,10)
while datetime.datetime.now() < starttime:
sleep(1)
driver = webdriver.Chrome()
driver.implicitly_wait(15)
driver.get('https://xxx.net/xxorms/login.html')
driver.find_element('link text','扫码登录').click()
sleep(6)
timea = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
file_path = 'C:\\Users\\Administrator\\Desktop\\erweima\\'
screen_name = file_path + timea + '.png'
print(screen_name)
driver.get_screenshot_as_file(screen_name)
image_loc = driver.find_element('xpath','//canvas[@width="150"]')
left = image_loc.location['x']
top = image_loc.location['y']
right = left + image_loc.size['width']
bottom = top + image_loc.size['height']
im = Image.open(screen_name)
im = im.crop((left,top,right,bottom))
im.save(screen_name)
smtpserver = 'smtp.qq.com'
sender = 'xxxx@qq.com'
receiver = 'xxxx@qq.com'
user = 'xxxx@qq.com'
password = 'ktfdgamqzvbaoqasftr5lrbdeacj'
message = MIMEMultipart()
message['Subject'] = '发送二维码邮件'
message['From'] = sender
message['To'] = receiver
part = MIMEApplication(open(screen_name,'rb').read())
part.add_header('Content-Disposition','attachment',filename=screen_name)
message.attach(part)
try:
smtp = smtplib.SMTP(smtpserver)
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,message.as_string())
smtp.quit()
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败')
for i in range(99999):
sleep(5)
if driver.title == '登录页面的title':
break
driver.find_element('css selector','[src="/xxxx/images/icon/app_pwpic_weboa.png"]').click()
for handle in driver.window_handles:
if driver.title != '登录页面的title':
break
#driver.find_element('css selector','[onclick="IndexSignIn();"]').click()
from selenium import webdriver
from time import sleep
import time,datetime
from PIL import Image
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.header import Header
from email.mime.application import MIMEApplication
starttime = datetime.datetime(2020,12,30,13,17,10)
while datetime.datetime.now() < starttime:
sleep(1)
driver = webdriver.Chrome()
driver.implicitly_wait(15)
driver.get('https://xxx.net/xxorms/login.html')
driver.find_element('link text','扫码登录').click()
sleep(6)
timea = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
file_path = 'C:\\Users\\Administrator\\Desktop\\erweima\\'
screen_name = file_path + timea + '.png'
print(screen_name)
driver.get_screenshot_as_file(screen_name)
image_loc = driver.find_element('xpath','//canvas[@width="150"]')
left = image_loc.location['x']
top = image_loc.location['y']
right = left + image_loc.size['width']
bottom = top + image_loc.size['height']
im = Image.open(screen_name)
im = im.crop((left,top,right,bottom))
im.save(screen_name)
smtpserver = 'smtp.qq.com'
sender = 'xxxx@qq.com'
receiver = 'xxxx@qq.com'
user = 'xxxx@qq.com'
password = 'ktfdgamqzvbaoqasftr5lrbdeacj'
message = MIMEMultipart()
message['Subject'] = '发送二维码邮件'
message['From'] = sender
message['To'] = receiver
part = MIMEApplication(open(screen_name,'rb').read())
part.add_header('Content-Disposition','attachment',filename=screen_name)
message.attach(part)
try:
smtp = smtplib.SMTP(smtpserver)
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,message.as_string())
smtp.quit()
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败')
for i in range(99999):
sleep(5)
if driver.title == '登录页面的title':
break
driver.find_element('css selector','[src="/xxxx/images/icon/app_pwpic_weboa.png"]').click()
for handle in driver.window_handles:
if driver.title != '登录页面的title':
break
#driver.find_element('css selector','[onclick="IndexSignIn();"]').click()