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. 虚拟机中CentOS 7下PHP环境配置

    为了简单起见,虚拟机网卡设置为桥接模式 1.yum install  httpd php 2.yum install mariadb 3.启动mariadb systemctl start maria ...

  2. 在Mac上配置adb命令

    在Mac上配置adb命令 在Mac OS中使用adb命令时,应进行变量配置,步骤如下: 一.终端中输入 cd ~ 二.输入touch .bash_profile 回车 touch:如果没有,则创建文件 ...

  3. Kubernetes集群初探

    上文我们在一台虚机上演示了Kubernetes基于redis和docker的guestbook留言簿案例,本文我们将通过配置Kubernetes集群的方式继续深入研究.集群组件安装如下配置. IP N ...

  4. TabLayout 简单使用。

    先上效果图 在使用TabLayout 之前需要导入design包. 我使用的是android studio 只要在build.gradle中加入 compile 'com.android.suppor ...

  5. 初探VIM编辑器

    初探VIM 引言---什么是Vim? 接触Linux这么久,想必对于一切皆文件的哲学思想已经不陌生了.因此,学习并掌握用一款Linux文本编辑器,对于玩转LInux来说,是很有必要的. vi编辑器是U ...

  6. cursor 鼠标样式——属性

    取值: [ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-res ...

  7. 关于int类型的赋值语句正确的有

    A.char a=65;          对 B.int a=12.0; C.int a=12.0f; D.int a=(int)12.0     对

  8. ShellExecute —— 运行一个外部程序

    原型参数 注意事项:使用该函数时,需添加该头文件:[1]  #include <shellapi.h> ShellExecute函数原型及参数含义如下: ShellExecute( hWn ...

  9. php的数据循环 之li的3个类判断

    这种判断必须得保证后台数据的键值为数字 ,反正要能跟数字计算的数据才行 ts2.php <?php$array = array('0'=>'a1','1'=>'b1','2'=> ...

  10. 转:python list排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...