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. LoadRunner测试结果分析02 转载至zhangzhe的新浪博客

    LoadRunner测试结果分析之我见 上述测试过程的重点在于事务,而LoadRunner生成的测试结果图并不局限于事务上,其中还有是关于Vusers.Errors.Web Resources.Web ...

  2. DAO模式设计步骤

    1.DAO 全称是data access object,数据库访问对象,主要的功能就是用于进行数据操作的,在程序的标准开发架构中属于数据层的操作. 2.分成架构 企业分层架构 客户层:因为现在都采用了 ...

  3. Swift 3 中的访问控制 open public internal fileprivate private

    Swift 3必看:新的访问控制fileprivate和open http://www.jianshu.com/p/604305a61e57 浅谈 Swift 3 中的访问控制 https://mai ...

  4. 在PHP中使用CURL

    转载自:http://www.phpchina.com/article-40161-1.html

  5. js call 以及apply

    用实例来讲:一半什么场合用到bind.call.apply呢? [一个对象 A]的方法被[另一个对象 B][引用]的时候(请注意 引用 的意思,区分调用 ):[对象A]的方法内的this作用域就不指向 ...

  6. php中的可变函数和匿名函数

    可变函数 一个函数的名,是一个变量的时候,就称为可变函数 <?php header("content-type:text/html;charset=utf8"); funct ...

  7. DHCP snooping

    DHCP snooping 技术介绍   DHCP监听(DHCP Snooping)是一种DHCP安全特性.Cisco交换机支持在每个VLAN基础上启用DHCP监听特性.通过这种特性,交换机能够拦截第 ...

  8. ajax同步异步问题

    之前一直在写JQUERY代码的时候遇到AJAX加载数据都需要考虑代码运行顺序问题.最近的项目用了到AJAX同步.这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去 ...

  9. python3.5------day4--function

    函数 函数的作用: 1.减少重复代码 2.扩展性强 3.使程序变的可维护 函数的定义: def test(): print("I'm yao") #def 是固定的,test为函数 ...

  10. HTML5 的web储存: localStorage & sessionStorage

    早期的浏览器使用cookie储存,HTML5新增web储存,包括:localStorage 和 sessiongStorage; localStorage:可以永久储存: sessionStorage ...