众所周知Selenium是自动化测试工具,不过鉴于其最基础的功能就是自动“点点点”,所以可以拿来做点另类的事情,比如,额。。。自动签到๑乛◡乛๑
简单来说就是:先写签到脚本,然后写个bat批处理,最后在计划任务中添加重复任务执行bat文件
下面是我用windows+python的一个小例子:
先写一个签到脚本checkin.py(因为只是随便用用,就不考虑太多严谨性那些了,哈哈):
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time
import logging
logger = logging.getLogger(u"签到")
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
url = "签到网站登录页"
# dr = webdriver.PhantomJS() # 使用PhantomJS无头浏览器可以不依赖浏览器图形界面运行,当然可以换成正常的Chrome等
# logger.info(u"打开PhantomJS")
# 2018.1.19 今天跑脚本发现selenium提示后续不再支持PhantomJS,所以换成了headless Chrome
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
dr = webdriver.Chrome(chrome_options=chrome_options)
dr.implicitly_wait(15)
dr.get(url)
logger.info(u"打开xxx网站")
dr.find_element_by_id('email').send_keys("登录用户名")
dr.find_element_by_id('passwd').send_keys("登录密码")
dr.find_element_by_id('login').click()
logger.info(u"登录")
dr.implicitly_wait(10)
try:
checkin_btn = WebDriverWait(dr, 5, 0.5).until(EC.presence_of_element_located((By.ID, "checkin")))
time.sleep(1)
# 2017-11-20:不知道是不是PhantomJS的bug,按钮点了有时会无效,这里加个判断,签到信息没变化就一直点击
text_success = dr.find_element_by_id("checkin-msg")
while text_success.text.find(u"流量") == -1 :
checkin_btn.click()
logger.info(u"点击签到")
time.sleep(2)
logger.info(u"签到成功!" + text_success.text)
except:
logger.info(u"今日已经签到过了!")
dr.quit()
脚本调试正常后,写一个bat批处理文件checkin.bat:
@echo off
d:
start python checkin.py
最后在windows计划任务(控制面板=>系统和安全=>管理工具=>任务计划程序)中添加定时任务:
以上设定之后,电脑开机情况下就会自动签到啦,简单又实用,哈哈哈~