Behave + Selenium(Python) 二
介绍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的默认编码方式。
问题解决:
- 当使用中文字符的时候,会出现 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/
- 出现 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) 二的更多相关文章
- Behave + Selenium(Python) 四
来自T先生 今天我们开始讲讲behave的厉害的地方. Tag文件的使用 在behave里面,如何来控制哪些case需要run,哪些case不需要run,这个时候就用Tag来控制.好了,接下来我用Ta ...
- Behave + Selenium(Python) 三
来自T先生 通过之前的2篇文章,大家都了解了如果利用behave和selenium打开网页和进行基本的操作,但是这些对于项目来说,却是往往不够的. 如果对junit或者TestNG熟悉的人都知道有@B ...
- Behave + Selenium(Python)一:
Behave 介绍:(来自T先生) 最近一个项目用了behave来做测试,因为之前没有接触过,所以写下最近的心得总结. 做自动化的人估计对selenium已经不是很陌生了,但是对于Behave工具,估 ...
- Selenium自动化测试Python二:WebDriver基础
WebDriver基础 欢迎阅读WebDriver基础讲义.本篇讲义将会重点介绍Selenium WebDriver的环境搭建和基本使用方法. WebDriver环境搭建 Selenium WebDr ...
- selenium + python自动化测试unittest框架学习(五)webdriver的二次封装
因为webdriver的api方法很长,再加上大多数的定位方式是以xpath方式定位,更加让代码看起来超级长,为了使整体的代码看起来整洁,对webdriver进行封装,学习资料来源于虫师的<se ...
- python+selenium十:selenium的二次封装
python+selenium十:基于原生selenium的二次封装 from selenium import webdriverfrom selenium.webdriver.support.w ...
- [译]Selenium Python文档:二、初步开始
2.1.简单使用 如果已经安装好了Selenium Python,你就可以像下面这样编写Python代码来使用它了: from selenium import webdriver from selen ...
- python+selenium十:基于原生selenium的二次封装
from selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium ...
- selenium + python自动化测试unittest框架学习(二)
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...
随机推荐
- 玩转 eclipse:[2]代码重构
Java 程序重构的目标就是进行全系统程序代码变更, 使得工程更符合常用设计思想,它不但不会影响程序的行为 ,反而使程序的结构更为清晰合理. Eclipse 提供一系列非常高效并且有易于重构程序代码的 ...
- 最新精品 强势来袭 XP,32/64位Win7,32/64位Win10系统【电脑城版】
随着Windows 10Build 10074 Insider Preview版发布,有理由相信,Win10离最终RTM阶段已经不远了.看来稍早前传闻的合作伙伴透露微软将在7月底正式发布Win10的消 ...
- 32.10 使用模板更改控件的UI
32.10 使用模板更改控件的UI 样式是改变WPF控件基本外形的非常好(且非常简单)的方式,它通过为窗口部件的特性设置建立一组默认的值,从而改变WPF控件的基本外形.但是,即使样式允许我们改变各种 ...
- Unix高级环境编程—进程控制(一)
一.函数fork #include<unistd.h> pid_t fork(void) ...
- EasyPlayerPro(Windows)流媒体播放器功能介绍及应用场景
EasyPLyerPro(Windows)经过为期一个月的开发已经基本完成,虽然目前仍存在一些小问题,但是总体功能还是趋于比较稳定和强大的,下面对其功能和应用场景做简要介绍. 一.EasyPlayer ...
- 几句话搞懂URI、URL、URN之间的关系
1.URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源. 2.RL是uniform resource locator,统一资源定位器,它是一种具体 ...
- 九度OJ 1076:N的阶乘 (数字特性、大数运算)
时间限制:3 秒 内存限制:128 兆 特殊判题:否 提交:6384 解决:2238 题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: 输入可 ...
- jvm堆查看
jps查看jvm的进程号 jmap -histo:live [进程号] >log.txt dump jvm堆.
- 双缓冲类里的OnPaint与OnSize,以及构造函数的关系
代码摘自wx\lib\agw\knobctrl.py一点体会是,OnSize作为class的函数,被放在构造函数里执行,会先于OnPaint执行.测试结果是,初始启动后,会执行8次OnSize(为什么 ...
- 一起来学linux:SAMBA服务器搭建
前面介绍的NFS服务器的用来linux和linux系统之间共享文件和目录的,那如果是linux和windows之间需要共享修改文件该如何操作呢.这据需要用到SAMBA系统.我们首先来看下SAMBA系统 ...