温欣爸比

  • 主页
  • Alfred Workflow
  • 《Vim 练级手册》
  • 常用命令
  • 代码笔记
  • 合辑
  • 在线工具
所有文章 友链 关于我

温欣爸比

  • 主页
  • Alfred Workflow
  • 《Vim 练级手册》
  • 常用命令
  • 代码笔记
  • 合辑
  • 在线工具

Splinter 用于测试web应用程序的 Python 工具

2018-02-25

Splinter 是一个用于测试 web 应用程序的工具,它具有查找元素、表单操作和其他浏览器操作的简单功能。



  • 安装
  • 快速入门

安装

1
$ pip install splinter

运行还需要安装 WebDriver,ChromeDriver 安装可以看这里,其他浏览器见这里

快速入门

我在官方的例子上做了下修改,现在运行下,然后我们再来分析它做了什么

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)

from splinter import Browser

browser = Browser(driver_name='chrome')
browser.driver.set_window_size(1920, 1080)
browser.visit('http://google.com')
browser.fill('q', 'splinter - python acceptance testing for web applications')
browser.find_by_name('btnK').click()
html = browser.html
print(html)
image = browser.screenshot(name='/Users/wxnacy/PycharmProjects/study/python/splinter_demo/screenshot', suffix='.jpg')
print(image)

if browser.is_text_present('splinter.readthedocs.io'):
print("Yes, the official website was found!")
else:
print("No, it wasn't found... We need to improve our SEO techniques")

browser.quit()

下面我们来分析下,这个例子都做了什么

  • 创建实例,并指定浏览器为 chrome,如果不指定默认为 foxfire,如果你本地的 driver 没有在环境变量中,还需要 executable_path 参数来制定 driver 地址

    1
    browser = Browser(driver_name='chrome')
  • 设置打开浏览器的大小,不设置打开一个默认大小的浏览器

    1
    browser.driver.set_window_size(1920, 1080)
  • 访问指定地址

    1
    browser.visit('http://google.com')
  • 在 name=q 的域内输入内容

    1
    browser.fill('q', 'splinter - python acceptance testing for web applications')
  • 找到 name=btnK 按钮,并点击,这是一个链式操作

    1
    browser.find_by_name('btnK').click()
  • 打印此时页面的 document,这时打印出来的是浏览器加载完动态效果的代码

    1
    2
    html = browser.html
    print(html)
  • 截图,在制定的文件名后加一个随机字符串并截图,后缀默认为 .png,方法返回最终的图片地址

    1
    browser.screenshot(name='/Users/wxnacy/PycharmProjects/study/python/splinter_demo/screenshot', suffix='.jpg')
  • 判断页面的文字中是否包含某个文字

    1
    2
    3
    4
    if browser.is_text_present('splinter.readthedocs.io'):
    print("Yes, the official website was found!")
    else:
    print("No, it wasn't found... We need to improve our SEO techniques")
  • 最后关闭浏览器

    1
    browser.quit()

关于浏览器和页面操作还有很多方法,详见 API 文档

  • Splinter
  • API Documentation
  • Selenium
  • Selenium Client Driver
最近更新
Alfred Workflow 命令行帮助工具
最近热读
Go 判断数组中是否包含某个 item
Vim 高级功能 vimgrep 全局搜索文件
办理北京工作居住证的一些细节
Go 语法错误:Non-declaration statement outside function body
Mac 电脑查看字体文件位置
扫码关注公众号,或搜索公众号“温欣爸比” 及时获取我的最新文章
赏

谢谢你请我喝咖啡

支付宝
微信
  • python
iTerm2 使用 expect 无密码登录服务器
Chrome Driver 下载
  1. 1. 安装
  2. 2. 快速入门
© 2017 - 2022 温欣爸比 京ICP备15062634号 总访问量3748次 访客数3699人次 本文总阅读量3次
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

  • python
  • flask
  • javascript
  • docker
  • 工具
  • openresty
  • 微信
  • java
  • hexo
  • 杂谈
  • vim
  • git
  • mysql
  • http
  • linux
  • mac
  • tmux
  • ssh
  • 算法
  • 开发
  • node
  • 杂文
  • jinja2
  • maven
  • spring
  • 北京
  • 生活
  • springboot
  • react
  • shell
  • graphql
  • iterm
  • expect
  • nginx
  • sqlalchemy
  • html
  • electron
  • vagrant
  • elastic
  • 宝贝
  • ansible
  • css
  • jquery
  • go
  • markdown
  • awk
  • redis
  • leetcode
  • zsh
  • 漫威
  • ssr
  • android
  • ffmpeg
  • chrome
  • vmware
  • youtube
  • windows
  • jupyter
  • excel
  • jq
  • Mac
  • Homebrew
  • mongo
  • py2
  • HomeBrew
  • movie
  • nodejs

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • Guru99
每天看书
每天背单词
每天一篇
写写代码
听听周杰伦
爱爱老婆