python里name define is not defined_哪些python库让你相见恨晚(二)

b733417696aa4e4d201d41ea200fff16.png

今天为大家介绍的是python另外一个比较好用的库-splinter, Splinter 是用 Python 开发的一个开源web自动化测试的工具集。它可以帮你自动化浏览器的行为,比如浏览 URLs 并和页面进行交互。。 why splinter? Splinter对已有的自动化工具(如:Selenium、PhantomJS、zope.testbrowser)进行抽象,形成一个全新的上层应用API,它使为Web应用编写自动化测试脚本变的更容易 例如, 用Splinter填写一个表单项:
browser.fill('user', 'hhtxwd') 

在Selenium中, 等效代码会是:

element= browser.find_element.by_name('user')element.send_keys('hhtxwd')
因为Splinter是一个抽象化层面, 它支持多种抽象化后端。   splinter特性
  • 1、可以模拟浏览器行为,访问指定的URL,并且可以指定不同的浏览器类型。比如firefox或者chrome等,只需要下载对应浏览器驱动;

  • 2、支持cookie操作,可以很方便的添加和删除cookie;

  • 3、支持模拟鼠标的动作;

  • 4、支持模拟键盘的输入操作,对input等控件的输入可以模拟用户的type过程。

  • 5、支持直接运行js或者调用页面的js。

  • 6、支持模拟上传文件。

  • 7、对radio和checkbox有专门的api支持,非常方便;

  • 8、支持快速的获取页面的元素或者判断是否存在文本,用于开发判断页面提示信息是否准确非常方便。

  • 9、最重要的,splinter的API非常简单,配合官方的文档学习成本几乎是0,当然你得懂一些python语法。如果你比较了解js和css,你可能会像喜欢jquery一样喜欢它;

举个简单例子

import timefrom splinter import Browser#splineter默认是firefox driver,需要指定加参数,如chromewith Browser('chrome') as browser:    # 访问 URL    url = "https://www.baidu.com"    browser.visit(url)    browser.fill('wd', 'splinter - python acceptance testing for web applications')    # 找到并点击搜索按钮    button = browser.find_by_xpath('//input[@type="submit"]')    # 与元素交互    button.click()    time.sleep(3)    if browser.is_text_present('splinter.readthedocs'):        print ("Yes, the official website was found!")    else:        print ("No, it wasn't found... We need to improve our SEO techniques")
如果 Browser不 指定driver, 那么会默认使用 Firefox;

53fb9e548fc1fd0dd1e6a41078f0c075.png

演示效果如下: 代码是不是十分的简单和清晰呢?下面我们就来介绍下spliner的使用吧 一、安装 前提已经安装python环境,演示使用python3.6
pip install splinter
依赖安装
pip install selenium
安装对应驱动(本文演示以chrome为例):

chrome:https://sites.google.com/a/chromium.org/chromedriver/downloads

备用:                       http://npm.taobao.org/mirrors/chromedriver/

firefox浏览器驱动:     https://github.com/mozilla/geckodriver/releases

08f8dee13d0ae21c63cc20b4c12ae2b6.png

chrome浏览器与driver版本需要一致,以免出现无法启动的情况

1eeb938a082a73302d1f286c2d501966.png

驱动存放位置

驱动下载完成后,放在python安装目录的scripts文件夹目录,如截图所示

ef861dd52a6257960f4c9b6b34d9e047.png

二、快速上手 浏览器 :需要使用splinter时,首先需要创建Browser实例,指定driver为chrome,且支持headless无头模式
from splinter import Browserbrowser = Browser(driver_name='chrome',headless=True)
访问链接 :使用visit方法
browser.visit('https://baidu.com')
输入搜索关键字 :页面加载完毕后,你能进行一系列的交互,比如点击,输入框填充字段使用 fill ,选择单选按钮和复选框。让我们在百度搜索框中 搜索  splinter - python
browser.fill('wd', 'splinter - python')

点击搜索按钮

通过以下操作找到百度搜索按钮:
button = browser.find_by_xpath('//input[@type="submit"]')
指定Splinter 哪一个按钮需要点击。这个button任意其他元素 - 可以通过它的css, xpath, id, tag 或 name来识别,比如:
browser.find_by_css('h1')browser.find_by_xpath('//h1')browser.find_by_tag('h1')browser.find_by_name('name')browser.find_by_text('HelloWorld!')browser.find_by_id('first')browser.find_by_value('value_name')
除此以外,还支持按照链接查找,如:
links_1 = browser.find_link_by_text('Link文字')links_2 = browser.find_link_by_partial_text('link文字部分')links_3 = browser.find_link_by_href('http://www.baidu.com')links_4 = browser.find_link_by_partial_href('baidu')
查找方法是可链式的,因此可以找到先前发现的元素,然后再找后续属性
div = browser.find_by_tag("div")with_elements = divs.first.find_by_name("name")
上述查找页面元素的方法会返回一个已找到元素list,如果需要获取指定的值,可以使用如下方法:
first_ = browser.find_by_name('name').first #返回已找到元素的第一个last_ = browser.find_by_name('name').last #返回已找到元素的最后一个index_found = browser.find_by_name('name')[1] #直接通过索引值获取 
找到搜索按钮后,我们就可以使用click()进行点击操作:
browser.find_by_xpath('//input[@type="submit"]').click()
验证内容:页面出现搜素结果后,可以使用browser对应方法验证页面内容,例如:
browser.title   #验证页面titlebrowser.html    #验证页面内容browser.url     #验证页面urlbrowser.is_text_present('splinter')  #验证是否存在对应textbrowser.is_text_not_present('splinter') #验证是否不存在对应text 
关闭浏览器: 结束测试后,使用 browser.quit 关闭浏览器:
browser.quit()
其他支持的操作包括:
  • 鼠标交互

  • 页面元素与表单交互

  • 检测文本和元素是否存在页面

  • cookies操作

  • 处理HTTP状态码

  • 异常处理

  • iframes,alert等交互操作

  • js调用

具体使用方法可查看

splinter中文文档

https://splinter-docs-zh-cn.readthedocs.io/zh/latest/

splinter PIYP

https://www.cnpython.com/pypi/splinter

f69624bef06c9081bb2e2bdea533ffee.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值