Splinter是以Selenium, PhantomJSzope.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,模拟百度搜索的更多相关文章

  1. python--selenium简单模拟百度搜索点击器

    python--selenium简单模拟百度搜索点击器 发布时间:2018-02-28 来源:网络 上传者:用户 关键字: selenium 模拟 简单 点击 搜索 百度 发表文章摘要:用途:简单模拟 ...

  2. JavaScript-dom3 json_str dom元素控制 模拟百度搜索

    访问关系-封装代码 html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. JS---DOM---案例:模拟百度搜索框

    模拟百度搜索框 我的思路整理: 1. 注册文本框抬起事件(onkeyup) 2. 处理函数: --->创建临时数组,循环遍历文本框键入的文字内容和keywords数组,用keyWords[i]. ...

  4. asp.net mvc 模拟百度搜索

    页面代码: <td><span>*</span>车牌号码:</td> <td> <div id="search"& ...

  5. python 模拟百度搜索

    import urllib.request def Url(url): flag = input("请输入要搜索的关键字:") headers_ = { "User-Ag ...

  6. ajax实现异步前后台交互,模拟百度搜索框智能提示

    1.什么是异步?在传统的网站项目中,填写一堆数据,最后点击提交,在点击提交的这一刻才实现数据提交,前后台交互.在你点击提交之前数据是没有提交到后台的.这样就会造成很大的不便.比如,我填了一大堆数据,结 ...

  7. jquery ui autocomplete 模拟百度搜索自动提示

    直接上代码 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=" ...

  8. JS——模拟百度搜索

    注意事项: 1.for循环移除子节点时,其长度是变化的 2.在文档流中,input.img.p等标签与其他标签有3px的距离,利用左浮动,可以消除3px距离 3.背景图片定位时,第一个值是x轴方向的值 ...

  9. 原生JS模拟百度搜索关键字与跳转

    <style type="text/css"> *{ margin: 0; padding: 0; } #text{ width: 300px; height: 30p ...

随机推荐

  1. 低版本的xcode打开xcode8上的xib错误

    XIB和Storeboard适配 在Xcode8之前,创建一个XIB或SB文件,都是一个600*600的方块XIB文件.在Xcode8之后,创建的XIB文件默认是6s尺寸的大小. 但是Xcode8打开 ...

  2. SQL语言基础

    主要学习链接1 http://www.cnblogs.com/anding/p/5281558.html 搜索学习链接2 http://www.cnblogs.com/libingql/p/41342 ...

  3. 艺术品照片融合到背景墙上效果及DEMO

    演示地址: 功能:图片按照角度增加阴影,比较复杂的功能就是当墙面是不规则的时候,贴的艺术品必须按照墙面的角度进行变形处理.

  4. 如何利用Cron让django应用定期执行

    最近用Django写了一个项目,但是有一个地方需要应用在后台自动定期执行检查,并存入数据库,如果单纯的写Python程序的话不能很好的跟django的结合在一起,写起来也和麻烦,查找资料的时候发现了d ...

  5. 常见HTTP状态码(200、301、302、500等)

    HTTP状态码,它是用以表示网页服务器HTTP响应状态的3位数字代码.状态码的第一个数字代表了响应的五种状态之一. 1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于 HTT ...

  6. publish/subscribe

    Pub/Sub功能 Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能.基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供 ...

  7. How do I remove javascript validation from my eclipse project?

    Right click your project Select Properties -> JavaScript -> Include Select Source tab (It look ...

  8. eclipse技巧,快捷键

    快捷键: ctrl + 1,快速修复 ctrl + d, 快捷删除行 shift + Enter,快速移动光标到下一行 ctrl + F11,运行代码 alt + ↑/↓,快速移动行 ctrl + a ...

  9. iOS9中的App Transport Security

    问题:webView加载网页加载不出来 原因:苹果在iOS9 sdk中加入了App Transport Security限制(iOS9以前的iOS sdk默认关闭ATS),默认强制使用https,并且 ...

  10. 利用BeautifulSoup抓取新浪网页新闻的内容

    第一次写的小爬虫,python确实功能很强大,二十来行的代码抓取内容并存储为一个txt文本 直接上代码 #coding = 'utf-8' import requests from bs4 impor ...