Python+Selenium实现最代码自动签到

前言

寒假在家无聊,之前了解了一个代码分享网站,对于我学习前端知识的课程时的帮助还是很大的,上面我也会经常上传一些代码与大牛们交流学习,今天的主角也就是源于此。那个网站上可以用牛币下载代码,我也是想可不可以借助python脚本实现自动化,于是我了解到了python的selenium库对于自动化测试的初学者很容易上手,OK,开始我的第二篇博客之旅。

1.什么是Selenium

Selenium主要用于web应用程序的自动化测试,但并不局限于此,它还支持所有基于web的管理任务自动化。
它的特点如下:

  • 开源,免费
  • 多浏览器支持:Firefox、Chrome、IE等
  • 多平台支持:Linux、Windows、Mac
  • 多语言支持:Java、Python、Ruby、C#、JavaScript、C++
  • 对web页面有良好的支持
  • 简单(API简单)、灵活(开发语言驱动)
  • 支持分布式测试用例执行

2.环境配置

Windows平台

1)Python安装
访问Python官方网站。根据自己的操作系统32/64 位,选择相应的版本。在Python安装界面,勾选Add python to path复选框,在安装完成后自动完成path的配置工作(可以省很多工作),安装好后在命令行界面输入“python”检查安装情况,相信大家早就玩过python了,具体过程就不叙述了。
2)Selenium的安装

pip install selenium

3)浏览器驱动的下载
各个浏览器驱动下载地址:http://www.seleniumhq.org/download/
下载时需要与Selenium的版本对照,否则运行时会报版本错误。这里有一份对照表:

chromedriver版本 支持的Chrome版本
v2.43 v69-71
v2.42 v68-70
v2.41 v67-69
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60

然后将下载得到的exe文件放到python的安装目录下(本人采用Google浏览器)。如图:
Python+Selenium实现最代码自动签到_第1张图片
4)测试用例

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.maximize_window()
driver.find_element_by_xpath(".//*[@id='kw']").send_keys("python")
driver.find_element_by_xpath(".//*[@id='su']").click()
sleep(5)
driver.quit()

这个测试用例呢是打开百度,输入“python”关键词搜索一下。

Ubuntu平台

由于Ubuntu系统自带python环境,只需要下载对应版本的浏览器驱动即可,与windows相似,本人脚本在windows系统测试。

3.执行测试

import time
import datetime
from selenium import webdriver
import ins

username = "*******" #登录账号
password = "*******"#登录密码
message = ins.getInstance()

driver = webdriver.Chrome() #模拟谷歌浏览器打开网站
driver.get("http://www.zuidaima.com/user/login.htm")

try:
    #输入用户名
    driver.find_element_by_id("account").send_keys(username)
    time.sleep(1)
    #输入密码
    driver.find_element_by_id("password").send_keys(password)
    time.sleep(1)
    #点击登录
    driver.find_element_by_id("login").click()
    time.sleep(1)

    driver.get("http://www.zuidaima.com/")

    #输入签到信息
    driver.find_element_by_id("mood_input").send_keys(message.strip())
    time.sleep(1)

    #完成签到
    driver.find_element_by_id("mood_publish").click()
    time.sleep(1)

    print("签到成功")


except:

    print("签到失败")

driver.quit()

此次更新签到内容,使用爬虫爬取美文网站上的每日一句,使得签到更加合理。

import requests
import re
from bs4 import BeautifulSoup

url='http://wufazhuce.com/'#每一期的链接共同的部分
def getInstance():
    try:
        res=requests.get(url)
        res.raise_for_status()
    except requests.RequestException as e:#处理异常
        print(e)
    else:
        html=res.text#页面内容
        soup = BeautifulSoup(html,'html.parser')
        bs = soup.find('div',class_='fp-one-cita')
        index = bs.a['href'].rsplit('/',1)[1]
        
        s=str(index)#数字类型转为字符串类型
        currenturl=url+'one/'+s#当前期的链接
        try:
            res=requests.get(currenturl)
            res.raise_for_status()
        except requests.RequestException as e:#处理异常
            print(e)
        else:
            html=res.text   #页面内容
            soup = BeautifulSoup(html,'html.parser')
            b=soup.select('.one-cita')#查找“每日一句”所在的标签
            print(b[0].text.strip())
        return b[0].text
        
    
        

if __name__=="__main__":
    getInstance()

这个网站4小时签到一次,那我肯定不能委屈自己看着表签到吧,虽然无聊但也不能太低级嘛不是,很简单,写一个批处理bat文件就行了。

此网站签到时间已改为12小时,对应修改bat文件即可–2020.3.20

@echo off  
:Again  
echo 自动签到中!!!
python ./qiandao.py 
timeout /t 14400
goto Again 

将两个脚本文件放到同一目录,剩下的你懂的。

源码地址:https://github.com/waiting-windy/zuidaima

4.结尾总结

关于自动化测试本人也是很感兴趣,但是由于学业暂时无法深入学习我也只好简单了解一下,知道的多可能大部分没有用但是说不定哪天用上了呢,本人是一位新手,但是每次经验都是自己花费时间与精力去认真完成的,希望可以与大家更多的学习交流。

Python+Selenium实现最代码自动签到_第2张图片

你可能感兴趣的:(python)