Splinter学习--初探1,模拟百度搜索
Splinter是以Selenium, PhantomJS 和 zope.testbrowser为基础构建的web自动化测试工具,基本原理同selenium
支持的浏览器包括:Chrome, Firefox(默认)
模拟百度搜索Splinter
from splinter import Browser
两种初始化Browser的方法,区别在于method2中离开with块区域后,browser自动关闭,而method1中若要关闭browser需主动调用quit()方法。
browser = Browser() # method1
with Browser() as b: # method2
# stuff ... 通过Browser类,可实现模拟浏览器的大部分操作:
Step1: 打开百度首页
browser.visit("http://www.baidu.com") # visit(url)用于打开指定URL的网页 Step2: 文本框输入搜索内容,如Splinter
browser.find_by_id("kw").first.fill("splinter") # fill()方法用于填充文本框内容
# browser支持多种查找方案,同selenium,如id,name,css,xpath
browser.find_by_id("su").click() # click()方法用于点击动作
注: Splinter中的find_by_*()方法,返回的均是列表类型ElementList,利用.first 或.last可分别获取第一个和最后一个元素,也可通过索引方式获取,默认情况下返回第一个元素(即
browser.find_by_id("kw").first <==>
browser.find_by_id("kw") <==>
browser.find_by_id("kw")[0]
)。 Step3: 判断当前网页中是否有Splinter,利用is_text_present(text,wait_time)方法查看当前页面是否包含指定text
if browser.is_text_present("Splinter 0.7.3 documentation", 10):
current_win = browser.windows.current # 获取当前窗口句柄 Step4: 打开Splinter官方文档页,查找到对应元素并点击
browser.find_by_id("1").first.find_by_xpath("h3//a")[0].click()
Step5: 切换窗口。点击后会产生新的窗口,browser.windows包含了当前所有窗口句柄,可通过判断来确认新的窗口
if len(browser.windows) > 1 :
for win in browser.windows:
if win is current_win:
continue
else:
print "current window title2: %s"% win.title
win.prev # 回到前一个窗口,即current_win 注: 窗口切换相关
browser.windows # 获取所有窗口对象句柄
browser.windows[0] # 获取第一个窗口句柄
browser.windows[window_name] # 获取指定名称的窗口句柄
browser.windows.current # 获取当前活动窗口
browser.windows.current = browser.windows[3] # 指定第四个窗口为当前活动窗口 window = browser.windows[0]
window.is_current # boolean - 判断window对象是否为当前窗口
window.is_current = True # 设定window为当前窗口
window.next # 跳转到window的下一个窗口
window.prev # 回到window的上一个窗口
window.close() # 关闭 window
window.close_others() # 关闭window之外的所有窗口
Splinter学习--初探1,模拟百度搜索的更多相关文章
- python--selenium简单模拟百度搜索点击器
python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...
- JavaScript-dom3 json_str dom元素控制 模拟百度搜索
访问关系-封装代码 html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- JS---DOM---案例:模拟百度搜索框
模拟百度搜索框 我的思路整理: 1. 注册文本框抬起事件(onkeyup) 2. 处理函数: --->创建临时数组,循环遍历文本框键入的文字内容和keywords数组,用keyWords[i]. ...
- asp.net mvc 模拟百度搜索
页面代码: <td><span>*</span>车牌号码:</td> <td> <div id="search"& ...
- python 模拟百度搜索
import urllib.request def Url(url): flag = input("请输入要搜索的关键字:") headers_ = { "User-Ag ...
- ajax实现异步前后台交互,模拟百度搜索框智能提示
1.什么是异步?在传统的网站项目中,填写一堆数据,最后点击提交,在点击提交的这一刻才实现数据提交,前后台交互.在你点击提交之前数据是没有提交到后台的.这样就会造成很大的不便.比如,我填了一大堆数据,结 ...
- jquery ui autocomplete 模拟百度搜索自动提示
直接上代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...
- JS——模拟百度搜索
注意事项: 1.for循环移除子节点时,其长度是变化的 2.在文档流中,input.img.p等标签与其他标签有3px的距离,利用左浮动,可以消除3px距离 3.背景图片定位时,第一个值是x轴方向的值 ...
- 原生JS模拟百度搜索关键字与跳转
<style type="text/css"> *{ margin: 0; padding: 0; } #text{ width: 300px; height: 30p ...
随机推荐
- 庆祝下:iOS 开发者企业级计划(299美元/年帐户+邓白氏码免费) 和 Windows Phone公司应用(公司帐户99美元+Symantec企业证书299美元/年))顺利发布成功
时间:2013-11-15,地址:http://192.168.0.8 网站可下载三个终端应用直接安装IOS,Windows Phone,Android iOS: 企业版IDP通过 iTunes.使 ...
- Hibernate注解使用以及Spring整合
Hibernate注解使用以及Spring整合 原文转自:http://wanqiufeng.blog.51cto.com/409430/484739 (1) 简介: 在过去几年里,Hibernate ...
- 前端mvc框架backbone.js入门[转]
原文地址:http://www.cnblogs.com/zhjh256/p/6083618.html 关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以 ...
- OC编程的一些UI细节
1/如果你想用一个半透明的View遮住当前窗口,连并NavigationBar也一并遮住的话,那么你需要 将视图添加到navigationController的View上 [self.navigati ...
- windows Service 创建部署
Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就 ...
- dump 分析模式之 INCORRECT STACK TRACE - djm2005dy的专栏 - 博客频道 - CSDN.NET
Dump 分析模式之 INCORRECT STACK TRACE dump 分析模式之 INCORRECT STACK TRACE 翻译自 MDA-Anthology Page288 初学者常犯的错 ...
- AJAX实现跨域的三种种方法(代理,JSONP,XHR2)
由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问. 比如说你的网站域名是aaa.com,想要通过AJAX请 ...
- 优秀的JavaScript开发框架
JavaScript基本上是一个面向对象的脚本语言,创建web应用程序和互动网站.Javascript框架也被称为Javascript库.JavaScript框架很容易提高设计web开发工作,提供了许 ...
- SpringMVC无法获取请求中的参数的问题的调查与解决(1)
*更新:本文第一版中犯了比较大的错误,无论@RequestBody还是@RequestParam注解一样,都会使用全局的Encoding进行解码,会导致特殊编码的参数值丢失. 只要抛弃掉注解,就完全可 ...
- C# DateTime.ToString的坑
当需要将时间类型转换为字符串类型时,一般直接使用datetime.ToString()方法即可 1.直接使用ToString(),不带任何参数,代码如下 static void Main(string ...