python2自动打卡脚本

📅 发布时间:2026/7/3 19:59:06 👁️ 浏览次数:
python2自动打卡脚本
我司打卡比较奇葩既不是钉钉也不是刷卡也不是刷脸刷指纹而是记工作日志按你最后更新的时间算下班时间因为近期没啥活又不想加装很忙就写了个自动打卡脚本帮我更新日志自动打卡其实这时候我人已经在家了嘻嘻python2写的因为公司电脑没有 python3流汗# -*- coding: utf-8 -*- from __future__ import print_function import os import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from datetime import datetime,date import sys from threading import Thread,Timer reload(sys) sys.setdefaultencoding(utf-8) CHROMEDRIVER_PATH /Users/dev/Documents/chromedriver-mac-x64/chromedriver work_log u目前看 cpu 状态稳住了没有持续上涨但是还是过高需要升级 delay 5400 def auto_daka(): # 检查文件是否存在且有执行权限 if not os.path.exists(CHROMEDRIVER_PATH): raise Exception(ChromeDriver 文件不存在: CHROMEDRIVER_PATH) if not os.access(CHROMEDRIVER_PATH, os.X_OK): print(警告: ChromeDriver 可能没有执行权限尝试添加...) os.chmod(CHROMEDRIVER_PATH, 0755) chrome_options Options() # 无头模式 # chrome_options.add_argument(--headless) # 禁用沙箱有时能解决启动问题 chrome_options.add_argument(--no-sandbox) # 禁用 GPU 加速 chrome_options.add_argument(--disable-gpu) # 指定 Chrome 二进制文件位置如果系统有多个 Chrome chrome_options.binary_location /Applications/Google Chrome.app/Contents/MacOS/Google Chrome try: driver webdriver.Chrome( executable_pathCHROMEDRIVER_PATH, chrome_optionschrome_options ) print(启动成功) driver.get(http://team/pages/viewpage.action?pageId259228461) print(页面标题:, driver.title) time.sleep(2) id os_username password os_password # 查找用户名和密码输入框并填入信息 username_input driver.find_element_by_id(os_username) password_input driver.find_element_by_id(os_password) # 清空并填入用户名 username_input.clear() username_input.send_keys(xxx) # 清空并填入密码 password_input.clear() password_input.send_keys(xxx) print(已填入登录信息) # 查找登录按钮假设有 id 或 class login_button driver.find_element_by_id(loginButton) # 或 find_element_by_class_name(btn-login) login_button.click() print(已点击登录) td_mon str(datetime.now().month) td_d str(datetime.now().day) td str(date.today()) td_j td[:7].replace(-,) # 找到月份链接 month_text d322-张三- td[:7] link driver.find_element_by_link_text(month_text) link.click() print(已点击链接) print(td,td) # 找到具体日期 h5_id xxx张三 td_j - td_j[:4]年td_mon月 td_d日 edit_btn driver.find_element_by_xpath( //h5[id{}]//span[title编辑].format(h5_id) ) edit_btn.click() time.sleep(5) from selenium.webdriver.common.keys import Keys # # 先检查有哪些 iframe iframes driver.find_elements_by_tag_name(iframe) print(找到 %d 个 iframe % len(iframes)) for i, iframe in enumerate(iframes): print(Iframe : id, name},iframe.get_attribute(id)) # 如果没有 iframe就不需要切换 if len(iframes) 0: first_layer_iframe iframes[0] driver.switch_to.frame(iframes[0]) # 切换到第一个 iframe print(切换到第一个 iframe) iframes driver.find_elements_by_tag_name(iframe) if len(iframes) 0: driver.switch_to.frame(iframes[0]) print(切换到第二个 iframe) #wysiwygTextarea_ifr # 先切换到 iframe如果有的话 #driver.switch_to.frame(cipe-frame) # 或 iframe 的 id/name imgs driver.find_elements_by_tag_name(img) print(imgs:,len(imgs)) # 查找元素 img driver.find_element_by_css_selector(img[aria-label*晚上]) # 点击图片定位光标 img.click() time.sleep(0.5) # 按右箭头键将光标移到图片后面 img.send_keys(Keys.ARROW_RIGHT) # 输入内容 img.send_keys(work_log) # 保存 driver.switch_to.default_content() driver.switch_to.frame(first_layer_iframe) save_button driver.find_element_by_id(rte-button-publish) save_button.click() # 操作完后切回主文档 driver.switch_to.default_content() time.sleep(5) driver.quit() os.system(shutdown -h now) sht_dwn() except Exception as e: print(错误详情:, str(e)) def shutdown_now(): from pynput.mouse import Controller as MouseController, Button from pynput.keyboard import Controller as KeyboardController, Key import time mouse MouseController() keyboard KeyboardController() # 鼠标移动到 (100, 200) mouse.position (0, 0) time.sleep(1) # 点击左键 mouse.click(Button.left) print(已点击) def sht_dwn(): import subprocess print(正在关机...) subprocess.call([ osascript, -e, tell application System Events to shut down ]) if __name__ __main__: Timer(delay,auto_daka).start()