介绍feature, py文件和之间关系:

example01.feature文件包括5行: Feature行: 介绍这个feature用来干什么的; Scenario行:介绍这个scenario用来干什么的;Given: 一般数据的初始化在这里执行;When:执行操作;Then:验证结果。

example01.py文件包括@given, @when, @then. 具体步骤实现在每一个对应的步骤里面实现。

接下来我们使用selenium来启动firefox浏览器,做一些页面上的操作和验证。 --可以使用exclipse或者Notepad++工具来写代码

一、新建文件夹example02,在文件夹里面新建example02.feature文件:

#../feature/example02/example02.feature
 Feature:Search behave results in
baidu
 
 Scenario: Search behave results in baidu
  Given Access baidu
website
  When  Input behave characters
  Then  There are more than 1
results displaying

二、在example02文件夹里面新建steps文件夹,然后创建example02.py文件:

# This Python file uses the following encoding: utf-8
#../feature/example02/steps/example02.py

from selenium import webdriver

import time

import sys

@Given('Access baidu website')

def step_impl(context):

  reload(sys)

  sys.setdefaultencoding('utf-8') #设置python的编码方式为utf-8,它默认的是ACSII,
否则会报UnicodeDecodeError

  context.driver = webdriver.Firefox()

  context.driver.get("http://www.baidu.com")

@when('Input behave characters')

def step_impl(context):

  context.ele_input = context.driver.find_element_by_xpath("//input[@id =
'kw']")

  context.ele_input.send_keys("behave")

  context.ele_btn = context.driver.find_element_by_xpath("//input[@id =
'su']")

  context.ele_btn.click()  time.sleep(10)

@Then('There are more than 1 results displaying')

def step_impl(context):

   context.ele_results =
context.driver.find_element_by_css_selector("div.nums")

   context.expected_results = '相关结果'

  if context.expected_results in context.ele_results.text:

    assert True

  else:

    assert False

三、打开cmd,cd到example02.feature所在的路径,然后输入behave, 结果运行正常:

你会发现第一次我运行失败,原因是没有设置python的默认编码方式。

问题解决:

  1. 当使用中文字符的时候,会出现  SyntaxError:
    Non-ASCII character '/xe6'
    错误,这个时候,在python语句的第一行加上  # This Python file uses
    the following encoding: utf-8 或者 #encoding: utf-8 即可以解决这个问题。以下为参考网址:

  http://blog.csdn.net/mayflowers/article/details/1568852

  https://www.python.org/dev/peps/pep-0263/

  1. 出现 UnicodeDecodeError:      'ascii' codec can't decode
    byte 0xe7 in position 0: ordinal not in     
    range(128):加入以下代码进去,即可以解决问题。

  import sys
  reload(sys)
  sys.setdefaultencoding('utf-8')

Behave + Selenium(Python) 二的更多相关文章

  1. Behave + Selenium(Python) 四

    来自T先生 今天我们开始讲讲behave的厉害的地方. Tag文件的使用 在behave里面,如何来控制哪些case需要run,哪些case不需要run,这个时候就用Tag来控制.好了,接下来我用Ta ...

  2. Behave + Selenium(Python) 三

    来自T先生 通过之前的2篇文章,大家都了解了如果利用behave和selenium打开网页和进行基本的操作,但是这些对于项目来说,却是往往不够的. 如果对junit或者TestNG熟悉的人都知道有@B ...

  3. Behave + Selenium(Python)一:

    Behave 介绍:(来自T先生) 最近一个项目用了behave来做测试,因为之前没有接触过,所以写下最近的心得总结. 做自动化的人估计对selenium已经不是很陌生了,但是对于Behave工具,估 ...

  4. Selenium自动化测试Python二:WebDriver基础

    WebDriver基础 欢迎阅读WebDriver基础讲义.本篇讲义将会重点介绍Selenium WebDriver的环境搭建和基本使用方法. WebDriver环境搭建 Selenium WebDr ...

  5. selenium + python自动化测试unittest框架学习(五)webdriver的二次封装

    因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...

  6. python+selenium十:selenium的二次封装

    python+selenium十:基于原生selenium的二次封装   from selenium import webdriverfrom selenium.webdriver.support.w ...

  7. [译]Selenium Python文档:二、初步开始

    2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...

  8. python+selenium十:基于原生selenium的二次封装

    from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium ...

  9. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

随机推荐

  1. C#操作XML方法:新增、修改和删除节点与属性

    一 前言 先来了解下操作XML所涉及到的几个类及之间的关系  如果大家发现少写了一些常用的方法,麻烦在评论中指出,我一定会补上的!谢谢大家 * 1 XMLElement 主要是针对节点的一些属性进行操 ...

  2. 九度OJ 1155:鸡兔同笼 (基础题)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2032 解决:1369 题目描述: 一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外).已经知道了笼子里面脚的总数a,问笼子里面 ...

  3. Mac下终端常用命令

    一.删除文件 1 打开终端应用程序 2 输入命令:sudo (空格) rm (空格)-r (空格)-f (空格)(注意-f后面还有空格),还要注意,全部小写. 3 把你要删的文件或者文件夹用mouse ...

  4. 解决win7打印机共享出现“无法保存打印机设置(错误0x000006d9)的问题

    最新解决win7打印机共享出现“无法保存打印机设置(错误0x000006d9)的问题,由系统下载吧率先分享: 有些用户在使用Windows7系统过程中,碰到到win7打印机共享出现“无法保存打印机设置 ...

  5. java ClassLoader类加载器

    原文 首先来了解一下字节码和class文件的区别: 我们知道,新建一个java对象的时候,JVM要将这个对象对应的字节码加载到内存中,这个字节码的原始信息存放在classpath(就是我们新建Java ...

  6. CUDA: 原子操作

    1.1以上计算功能集支持全局内存上的原子操作, 1.2以上支持共享内存上的原子操作. atomicAdd(add,y)将生成一个原子的操作序列,这个操作序列包括读取地址addr处的值,将y增加到这个值 ...

  7. Java for LeetCode 081 Search in Rotated Sorted Array II

    Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would this ...

  8. 利用iOS原生系统进行人脸识别+自定义滤镜(GPUImage)

    人脸识别+滤镜效果(基于GPUImage实现的自定义滤镜) 最近碰到一个好玩的需求.说要客户端这边判定一下是否有人脸.在有的基础上.对相片做进一步的美化滤镜处理. 首先是人脸的识别判定; //将图片对 ...

  9. 微信公众号验证TOKEN

    服务端验证微信token header('Content-type:text'); define("TOKEN", "weixin"); $signature ...

  10. iOS开发中集成Reveal

    [转]http://blog.devzeng.com/blog/ios-reveal-integrating.html 配置方式一简介有效. Reveal 是一个界面调试工具.使用Reveal,我们可 ...