手机/网页端实现自动打卡

首先我先说一下我的思路:
第一种:要抓包,分析上班打卡(签到)和下班打卡(签退)的数据包,数据包发送的数据,利用python中的requests库来实现。
第二种:通过模拟点击手机或者网页来实现签到打卡。
由于第二种实现相对比较简单,所以暂且利用第二种方法实现。

网页端实现自动打卡

首先是环境准备:py开发环境(我用的pycharm 社区版)、Chrome浏览器

  1. 安装pycharm,链接: [https://www.runoob.com/w3cnote/pycharm-windows-install.html]

  2. 在pycharm中安装selenium库
    File→settings
    手机/网页端实现自动打卡_第1张图片
    手机/网页端实现自动打卡_第2张图片

  3. 等待selenium库安装好,就可以开始写脚本了

代码实现

# -*- coding: utf-8 -*-
from selenium import webdriver
#下面填写需要打开的网址,登录所需的用户名和密码
url = "www.xxx.com"
uid="username"
pwd="password"

#模拟打开一个chrome浏览器
driver = webdriver.Chrome()

def signin():
    ##签到
    driver.find_element_by_xpath('/html/body/div/div[2]/div/div[1]/div/div/div/span').click()
def signout():
    ##签退
    driver.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/div/div/span').click()

def start(uid,pwd):
    try:
        driver.get(url)
        #time.sleep(4)		//设置延时
        driver.find_element_by_xpath('/html/body/div[1]/div/form/div/div[2]/div[1]/div[2]/div[2]/input').send_keys(uid)
        print('输入账号')
        #time.sleep(3)
        ##输入密码
        driver.find_element_by_xpath('//*[@id="login_password"]').send_keys(pwd)
        print("输入密码")
        #time.sleep(3)
        ##点击登录
        driver.find_element_by_xpath('//*[@id="login_button"]').click()
        print("点击登录")
        #time.sleep(8)
        #// *[ @ id = "onlineCard"]
        ##点击个人考勤界面
        #driver.find_element_by_xpath('//*[@id="onlineCard"]').click()
        driver.find_element_by_xpath('//*[@id="onlineCard"]').click()
        time.sleep(5)
        #driver.find_element_by_xpath('/html/body/div/div[3]/div/div[1]/div/div/div/span').click()
        ##*****************签到******************
        signin()
        ##*****************签退******************
		signout()
        print('签到成功')
        #driver.quit()
        time.sleep(4)

    except:
        print("error!")
    finally:
    	#关闭浏览器
        driver.quit()

if __name__ == "__main__":
	start(uid,pwd)
	print("签到成功!!!")

关于xpath选取

打开所需要的网页,按F12
手机/网页端实现自动打卡_第3张图片
点击那个Copy XPath 或者Copy full XPath
复制到下面的代码中进行点击测试

driver.find_element_by_xpath('XPath  or  full XPath').click()

手机/网页端实现自动打卡_第4张图片

防踩坑

这样的代码肯定是执行不了的,因为没有chrome驱动
查看你的chrome浏览器版本

  1. 在浏览器中输入chrome://version/
    手机/网页端实现自动打卡_第5张图片

  2. 下载离你的chrome浏览器版本最近的chromedriver.exe
    链接: [http://npm.taobao.org/mirrors/chromedriver/

  3. 项将下载好的chromedriver.exe放入到你的chrome浏览器目录C:\Program Files (x86)\Google\Chrome\Application
    手机/网页端实现自动打卡_第6张图片

  4. 然后再将拷贝到Python路径下
    手机/网页端实现自动打卡_第7张图片
    这样程序就可以运行啦

回去陪女朋友了,改天再更

你可能感兴趣的:(Python,python)