寒假在家无聊,之前了解了一个代码分享网站,对于我学习前端知识的课程时的帮助还是很大的,上面我也会经常上传一些代码与大牛们交流学习,今天的主角也就是源于此。那个网站上可以用牛币下载代码,我也是想可不可以借助python脚本实现自动化,于是我了解到了python的selenium库对于自动化测试的初学者很容易上手,OK,开始我的第二篇博客之旅。
Selenium主要用于web应用程序的自动化测试,但并不局限于此,它还支持所有基于web的管理任务自动化。
它的特点如下:
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浏览器)。如图:
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系统自带python环境,只需要下载对应版本的浏览器驱动即可,与windows相似,本人脚本在windows系统测试。
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
关于自动化测试本人也是很感兴趣,但是由于学业暂时无法深入学习我也只好简单了解一下,知道的多可能大部分没有用但是说不定哪天用上了呢,本人是一位新手,但是每次经验都是自己花费时间与精力去认真完成的,希望可以与大家更多的学习交流。