lettuce webdriver 自动化测试---玩转BDD

简介:

  行为驱动开发(BDD),依然高大上的矗立在远方,很少被人问津,一方面是BDD的思想不太容易理解,别一方面BDD的资料并不多。中文的资料就更少了。

     之前增写过一篇《python BDD 框架之lettuce》 来介绍BDD ,本文将在此基础上通过lettuce webdriver来实现自动化测试,感兴趣的测试同学跟我一起装X吧!

 

下面向读者介绍如何通过lettuce 和 webdriver 结合来编写自动化脚本。

环境配置:

------------------------------------------

前提:有python载发环境,并且安装了pip ,强烈建议在linux下操作。

第一步,安装lettuce 

root@machine:~$ [sudo] pip install lettuce

第二步,安装lettuce_webdriver

https://pypi.python.org/pypi/lettuce_webdriver

root@machine:~$ [sudo] pip install lettuce_webdriver

第三步,安装nose

nose继承自unittest属于第三方的python单元测试框架,且更容易使用,lettuce_webdriver包的运行依赖于nose模块

https://pypi.python.org/pypi/nose/

root@machine:~$ [sudo] pip install nose

---------------------------------

下面以为百度搜索为例,好吧!谁让这个例子能简单明了的讲解问题呢。所以,我们再次以百度搜索为例。

一般的百度搜索自动化脚本是这样的:

# coding = utf-8
from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
browser.find_element_by_id("kw1").send_keys("selenium")
browser.find_element_by_id("su1").click()
browser.quit()

下面看看BDD是怎么玩的:

 

创建目录结构如下:

.../test/features/baidu.feature

          /step_definitions/setps.py

          /support/terrain.py

先来回顾一下我们去写百度搜索脚本的过程:

功能:访问百度
   
   场景:搜索selenium
     我去访问百度的“http://www.badiu.com”
     通过id 为“kw1”找到输入框并输入“selenium”关键字
     点击 id为“su1” 按钮
     然后,我在搜索结果上找到了“seleniumhq.com”的网址
     最后,我关闭了浏览器

OK,确定了我们要做事情的过程,下面将其转换成BDD 的描述文件。

baidu.feature

Feature: Go to baidu  
  
Scenario: search selenium  
  Given I go to "http://www.baidu.com/"  
     When I fill in field with id "kw1" with "selenium"
     And  I click id "su1" with baidu once  
     Then I should see "seleniumhq.org" within 2 second
     Then I close browser

setps.py

from lettuce import *  
from lettuce_webdriver.util import assert_false  
from lettuce_webdriver.util import AssertContextManager  
  
def input_frame(browser, attribute):
    xpath = "//input[@id='%s']" % attribute  
    elems = browser.find_elements_by_xpath(xpath)  
    return elems[0] if elems else False  

def click_button(browser,attribute):
    xpath = "//input[@id='%s']" % attribute
    elems = browser.find_elements_by_xpath(xpath)
    return elems[0] if elems else False

#定位输入框输入关键字
@step('I fill in field with id "(.*?)" with "(.*?)"')
def baidu_text(step,field_name,value):
    with AssertContextManager(step):  
        text_field = input_frame(world.browser, field_name)  
        text_field.clear()  
        text_field.send_keys(value)

#点击“百度一下”按钮
@step('I click id "(.*?)" with baidu once')
def baidu_click(step,field_name):
    with AssertContextManager(step):
        click_field = click_button(world.browser,field_name)
        click_field.click()

#关闭浏览器
@step('I close browser')
def close_browser(step):
    world.browser.quit()

注意:@step (‘xxx’)读取了baidu.feature 里有关键字,用正则表达式匹配的。 这是BDD的核心点。理解了这一点,就知道BDD是怎么玩的了。

 

terrain.py

from lettuce import before, world  
from selenium import webdriver  
import lettuce_webdriver.webdriver  
 
@before.all  
def setup_browser():  
    world.browser = webdriver.Friefox()

terrain文件配置浏览器驱动,可以作用于所有测试用例。

.../test/目录下输入lettuce命令,运行结果如下图

 

对于当前测试用例来说,添加新的测试场景也非常简单,我们只用修改baidu.feature即可:

Feature: Go to baidu  
  
Scenario: search selenium  
  Given I go to "http://www.baidu.com/"  
     When I fill in field with id "kw1" with "selenium"
     And  I click id "su1" with baidu once  
     Then I should see "seleniumhq.org" within 2 second

Scenario: search lettuce_webdriver
  Given I go to "http://www.baidu.com/"  
     When I fill in field with id "kw1" with "lettuce_webdriver"
     And  I click id "su1" with baidu once  
     Then I should see "pypi.python.org" within 2 second
     Then I close browser

运行结果如下:

 

通过lettuce 来编写自动化脚本将是一件非常有趣的事儿。

目录
相关文章
|
2月前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
134 8
|
4月前
|
Web App开发 数据采集 存储
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。
633 3
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
|
4月前
|
数据采集 Web App开发 测试技术
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
在网络爬虫领域,Selenium与WebDriver是实现跨浏览器自动化数据抓取的利器。本文详细介绍了如何利用Selenium和WebDriver结合代理IP技术提升数据抓取的稳定性和效率。通过设置user-agent和cookie来模拟真实用户行为,避免被网站检测和阻止。文章提供了具体的代码示例,展示了如何配置代理IP、设置user-agent和cookie,并实现了跨浏览器的数据抓取。合理的参数配置能有效减少爬虫被封禁的风险,提高数据抓取效率。
548 6
使用Selenium与WebDriver实现跨浏览器自动化数据抓取
|
4月前
|
Web App开发 JavaScript Java
自动化测试的利剑:Selenium WebDriver入门与实践
【9月更文挑战第21天】在软件开发的海洋中,自动化测试犹如一艘船,帮助开发者们快速航行至质量保证的彼岸。本文将作为你的罗盘,指引你了解和掌握Selenium WebDriver这一强大的自动化测试工具。通过深入浅出的方式,我们将探索Selenium WebDriver的基本概念、安装过程以及编写简单测试脚本的方法。无论你是刚接触自动化测试的新手,还是希望提升测试技能的开发者,这篇文章都将为你提供有价值的指导。
|
4月前
|
Web App开发 Java 测试技术
自动化测试的利器:Selenium WebDriver入门与实践
【9月更文挑战第8天】在软件开发的海洋中,测试是确保我们不会溺水的那根救生索。Selenium WebDriver,作为自动化测试的明星工具,让这根救生索更加结实可靠。本文将带你快速上手Selenium WebDriver,从基础设置到实际操作,再到实战演练,让你的开发之旅更加平稳顺畅。
|
4月前
|
JavaScript 前端开发 Windows
使用webdriver实现基于GUI的测试
本文介绍的webdriver是playwright的插件
34 0
|
5月前
|
Web App开发 Java 测试技术
自动化测试的新篇章:使用Selenium WebDriver进行高效测试
【8月更文挑战第31天】 在软件开发的海洋中,自动化测试犹如一艘航船,带领着质量保证团队驶向效率与精准的彼岸。本文将揭开Selenium WebDriver的神秘面纱,通过实际案例引导您掌握这一强大的自动化测试工具。我们将从Selenium WebDriver的基础概念出发,逐步深入到代码示例,最后探讨其在现实项目中的应用场景和优势,旨在为您的软件测试之旅提供清晰的指南。
|
5月前
|
Web App开发 敏捷开发 Java
自动化测试中的神器 —— Selenium WebDriver
【8月更文挑战第31天】在软件开发的海洋里,自动化测试是那艘能带领我们驶向高效与精准彼岸的帆船。本文将带你领略Selenium WebDriver的魅力,从安装到实战,一步步解锁自动化测试的新境界。你将看到代码如何化繁为简,让重复的测试工作变得轻松愉快。让我们一起驾驭这股代码的风,向着软件质量的灯塔进发!
|
4天前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
4天前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。

热门文章

最新文章