Selenium另类应用

众所周知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计划任务(控制面板=>系统和安全=>管理工具=>任务计划程序)中添加定时任务:

Selenium另类应用_第1张图片
常规
Selenium另类应用_第2张图片
新增触发器
Selenium另类应用_第3张图片
新增操作

以上设定之后,电脑开机情况下就会自动签到啦,简单又实用,哈哈哈~

你可能感兴趣的:(Selenium另类应用)