Splinter学习——不仅仅是自动化测试哦
前两天,想抢购一个小米MIX,结果,一开始抢就没有了。于是想,作为程序猿,总得有点特殊手段吧,比如说一个小脚本。最近在学习python,百度了一下,发现了Splinter这个强大的东东!用了不到两小时的时间,就可以实现许多令人点赞的功能,真让人很兴奋呐!
首先,官网(https://splinter.readthedocs.io/en/latest/index.html)介绍,一句话,一个开源工具用来通过python自动化测试web,让电脑自动操作网页:
Splinter is an open source tool for testing web applications using Python. It lets you automate browser actions, such as visiting URLs and interacting with their items.
既然可以自动操作网页,当然不局限于自动化测试喽!
第一步,下载Splinter模块和Chrome或FireFox的驱动(就是强大的开源web自动化测试框架selenium的驱动)。
Splinter模块是python egg,下载当然很简单:pip install splinter
由于基于selenium,所以,FireFox和Chrome的驱动,都依赖于pip install selenium,不过好像执行pip install splinter之后默认就已经安装了,没有的话再安装一下。
我这个用Chrome的驱动chromedriver,注意版本要对应,不然基本上会有unknown error,打不开浏览器!
官网下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads 当然这里需要可以连接上google!
selenium 3.x开始,webdriver/firefox/webdriver.py的__init__中,executable_path="geckodriver",所以火狐浏览器需要这个驱动!
下载地址:https://github.com/mozilla/geckodriver/releases/
上述驱动也可以在selenium官网中查找并下载:http://docs.seleniumhq.org/download/
这样,Splinter就可以自动打开浏览器,并进行操作了!
WebDriverException: Message: Expected browser binary location, but unable to find binary in default location, no 'moz:firefoxOptions.binary' capability provided, and no binary flag set on the command line
第二步,你可以根据官网的例子用python IDLE运行,打开浏览器并进入指定网页,操作网页。
#coding:utf-8
from splinter import Browser
import time, threading
def qq_mail_login(url=None, username=None, password=None):
with Browser(driver_name="chrome") as browser:
browser.visit(url)
browser.find_by_id(u"userNameIpt").first.fill(username)
browser.find_by_id(u"pwdInput").first.fill(password)
browser.find_by_id("btnSubmit").first.click() for k, v in browser.cookies.all().items():
print (k, ":", v) quit_browser(browser)
def quit_browser(browser=None):
flag = input("Input q when you want to quit: ")
if 'q' == str(flag):
quit(browser) if __name__=='__main__':
url="http://email.163.com/"
username="你的邮箱地址"
password="你的邮箱密码"
#t1 = threading.Thread(target=qq_mail_login,args=(url,username,password))
#t1.start()
#t1.join()
qq_mail_login(url,username,password)
运行效果就是,你什么都不用管,可以自动用指定浏览器打开你的邮箱:
#coding:utf-8
from splinter import Browser
import time, threading
def qq_mail_login(url=None, username=None, password=None):
with Browser(driver_name="chrome") as browser:
browser.visit(url[0])
#进入登录界面
browser.click_link_by_href("//order.mi.com/site/login?redirectUrl=http://www.mi.com/")
#输入用户名密码,完成登录
browser.find_by_id(u"username").first.fill(username)
browser.find_by_id(u"pwd").first.fill(password)
browser.find_by_id("login-button").first.click()
time.sleep(1)
#进入购买界面
browser.visit(url[1])
#点击购买“下一步”
count = 1
while not browser.is_element_not_present_by_id('J_chooseResultInit'):
print ("第",count,"次: ",browser.is_element_not_present_by_id('J_chooseResultInit'))
time.sleep(10)
count += 1
browser.find_by_id("J_chooseResultInit").first.click()
quit_browser(browser) def quit_browser(browser=None):
flag = input("Input q when you want to quit: ")
if 'q' == str(flag):
quit(browser) if __name__=='__main__':
url=["http://www.mi.com/","http://item.mi.com/buyphone/mix/"]
username="你的用户名"
password="你的密码"
#t1 = threading.Thread(target=qq_mail_login,args=(url,username,password))
#t1.start()
#t1.join()
qq_mail_login(url,username,password)
Splinter学习——不仅仅是自动化测试哦的更多相关文章
- Splinter学习--初探1,模拟百度搜索
Splinter是以Selenium, PhantomJS 和 zope.testbrowser为基础构建的web自动化测试工具,基本原理同selenium 支持的浏览器包括:Chrome, Fire ...
- Splinter学习--初探3,两种方式登录QQ邮箱
目前,qq邮箱的登录方式有: 1.利用账号.密码登录 2.快捷登录,前提是你本地已有qq账号登录中 和前面一样,还是先到qq邮箱登录首页,审查页面元素,找到我们进行登录操作所相关的链接.按钮或是输入框 ...
- Selenium学习笔记(1) - 自动化测试体系与原理
技术体系 基于代码的测试(Code-Based Testing) 基于协议的测试(Protocol-Based Testing) 基于界面的测试(GUI-Based Testing) 工作原理 基于代 ...
- Python学习总结 10 自动化测试Selenium2
一, 配置 Selenium2 1 Selenium是什么? Selenium是一个用于Web应用程序测试的工具.Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括I ...
- 持续集成学习5 jenkins自动化测试与构建
一.jenkins参数 1.主要参数类型 2.触发构建参数 3.参数值的使用 4.给git仓库配置参数,让其构建的时候可以选择分支 5.配置password参数 6.添加Choice参数 7.其它好用 ...
- 在做自动化测试之前你需要知道的,转自:http://www.cnblogs.com/fnng/p/3653793.html
什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念 ...
- 基于python的接口测试学习笔记一(初出茅庐)
第一次写博客笔记,讲一下近来学习的接口自动化测试.网上查阅了相关资料,最后决定使用python语言写接口测试,使用的是python的第三方库requests.虽然python本身标准库中的 urlli ...
- Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介
前言 之前的系列博客,陆续学习整理了自动化测试环境的搭建.IE和Chrome浏览器驱动的配置.selenium-webdriver模块封装的元素定位以及控制浏览器.处理警示框.鼠标键盘等方法的使用,这 ...
- 浅谈UI自动化测试
最近一直在学习python,正好部门技术结构调整,就开始了点工向UI自动化测试的转变,我要说瞌睡来了就掉枕头么? 不过还好,可以将python的学习成果在自动化测试中实践... 1.about自动化测 ...
随机推荐
- bootstrap兼容性问题
转自--http://blog.csdn.net/chenhongwu666/article/details/41513901/ 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstr ...
- django数据库操作和中间件
数据库配置 django的数据库相关表配置在models.py文件中,数据库的连接相关信息配置在settings.py中 models.py相关相关参数配置 from django.db import ...
- UOJ59 WC2013 小Q运动季
题意:给一个模线性方程组,构造解满足尽量多的方程. 直接枚举. 模数两两互质,先排除无解的,然后CRT,然而要高精,上python. 直接高消,有完美解. 2^20暴搜. 分解模数,对每个质数高消,C ...
- c# .Net并行和多线程编程之Task学习记录!
任务Task和线程Thread的区别: 1.任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行. 2.任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线 ...
- vue.js开发环境搭建
1.安装node.js(http://www.runoob.com/nodejs/nodejs-install-setup.html) 2.基于node.js,利用淘宝npm镜像安装相关依赖 在cmd ...
- 【转】[教程]在 win7 / win8 下安装苹果系统 (懒人版)
前言 这篇安装教程的素材在国庆就准备好了,但那时学习任务比较重,没有时间发帖,一直拖到现在.趁这个周末有空,赶紧写完它,希望能帮助一些景友. 论坛已经有不少安装教程,如果对这篇安装教程有疑问可以去 ...
- ThinkphpCMF笔记
1.模板js,css文件__PUBLIC__ <link href="__TMPL__Public/style.css" rel="stylesheet" ...
- Parse Fatal Error at line 4 column 43: 已经为元素 "web-app" 指定属性 "xmlns"。
打开web.xml;最上面的web-app里面,看有没有重复的,重点关注xmlns="http://java.sun.com/xml/ns/javaee" ,如果重复,删去就好~~ ...
- [Asp.net mvc]OutputCacheAttribute
什么是Cache? 缓存在web应用中是一种以空间换去时间的技术,把频繁访问并且不经常变化的数据存储到内存中,以达到快速访问的目的.在web应用中是比较常见的优化方式. OutputCacheAttr ...
- ps命令
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...