Cucumber+Selenide指导手册

写在前面的话

由于本人经验相对不足,本指导文档仅供参,多谢,csdn的格式确实不会调,看起来可能有点累,大家将就下吧,csdn图片不能直接粘贴,真的不方便。

Selenide介绍

Selenide是一个由SeleniumWebDriver驱动的自动化测试框架,具备以下优点:

·        简练的流式API

·        支持Ajax稳定性测试

·        强大的真正页面对象选择器

使用Selenium无需考虑怎样关闭浏览器、处理超时和StaleElement异常、搜索相关的日志信息以及调试测试代码。只需要关心业务逻辑,剩下的交给Selenide完成就好!

Cucumber介绍

Cucumber是一个能够理解用普通语言描述的测试用例的支持行为驱动开发(BDD)的自动化测试工具,用Ruby编写,支持Java·Net等多种开发语言。

上手指导

1、  安装jdk并配置相关环境变量

2、  安装maven,并配置相关变量

3、  下载Eclipse启动后下载Cucumber相关插件并创建maven项目Cucumber 插件(可在eclipse 中下载该插件扩展 ) 附上地址 cucumber - http://cucumber.github.com/cucumber-eclipse/update-site ,可在eclipse点击 Help-->Istall Software 点击add并且输入Name(cucumber ) location(http://cucumber.github.com/cucumber-eclipse/update-site),点击ok,接下来安装直到完成即可.

 

完成以上步骤后,正式开始编写Feature文件

创建Feature文件

1、  进入已创建好的项目,新建如图所示文件夹目录结构为 src/test/resources。


2、 引入所需的pom.xml文件(需要引入较多相关的依赖包,所以需要保持网络畅通)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>ictrade</groupId>
  <artifactId>Auto_Test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Auto_Test</name>
  <url>http://maven.apache.org</url>

  	<properties>
		<!-- Dependency Versions -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<dep.spring.version>4.1.6.RELEASE</dep.spring.version>
		<dep.mybatis.version>3.2.8</dep.mybatis.version>
		<dep.mybatis-spring.version>1.2.3</dep.mybatis-spring.version>
		<dep.wink.version>1.4</dep.wink.version>
		<dep.jaxb-api.version>2.2.12</dep.jaxb-api.version> <!-- wink 依赖的是 2.2 -->
		<dep.jaxb-impl.version>2.2.11</dep.jaxb-impl.version> <!-- wink 依赖的是 2.2.1.1 -->
		<dep.mysql-jdbc.version>5.1.37</dep.mysql-jdbc.version>
		<dep.slf4j.version>1.7.12</dep.slf4j.version>

		<!-- Plugin Versions -->
		
		<findbugsXmlOutput>true</findbugsXmlOutput>
		
		<findbugsXmlWithMessages>true</findbugsXmlWithMessages>
		
		<xmlOutput>true</xmlOutput>
		
		

		<!-- Project configuration -->
		<maven.compiler.source>1.7</maven.compiler.source>
		<maven.compiler.target>1.7</maven.compiler.target>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	</properties>


	<dependencies>
		<dependency>
			<groupId>info.cukes</groupId>
			<artifactId>cucumber-java</artifactId>
			<version>1.2.4</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>info.cukes</groupId>
			<artifactId>cucumber-junit</artifactId>
			<version>1.2.4</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<version>2.53.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
			<version>4.12</version>
		</dependency>
		<dependency>
			<groupId>com.codeborne</groupId>
			<artifactId>selenide</artifactId>
			<version>3.8</version>
		</dependency>
	</dependencies>
</project>

3 、进入resources文件夹内,创建文件夹(Folder),并输入文件夹名称



4、 文件夹创建成功后,右键选择已创建的文件夹创建文件(file),文件名称命名为*.feature ,如上图


5、 创建完成后,打开文件,开始编写Feature文件,以QQ空间登录为例。


  写法说明

a)        Feature:表示要实现的功能说明。

b)        Scenario Outline:场景大纲  表示当前步骤要实现的功能

c)        Scenario:场景

d)        Given : 假设我要怎么做,相当于前置条件

e)        And :    和,并且

f)         When : 当,做对应操作,相当于操作步骤

g)        Then :  那么,则,表示预期结果

h)        Examples: 场景大纲,可输入的值

i)          参数说明”<用户名>”  “<密码>” 表示此值需要参数化,可在下面的Examples中列举,可以参考上面截图

注:有Outline时必须有Examples,编写时请将输入法切换至英文模式,否则可能会出现一些问题,导致无法检查通过。

6、 写完Feature文件后,可先右键选择Pretty Format执行检查,检查是否有语法错误。

7 检查确认通过后,可选择Run As,Cucumber Feature来进行执行



8、 执行完成后,控制台将显示Feature文件对应代码桩    



9 、 创建Java文件,文件名称尽量与Feature文件一致,并且后面+def(其实也没有什么规范,只是好识别而已),

,

创建Steps文件(主要生成报告)附上TestCaseSteps 文件内容

package QQ;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/kc", plugin = { "pretty", "html:target/cucumber-html-report",
		"json:target/operation.json" })

public class TestCaseSteps {
	
}

10 、将前面生成的代码桩文件拷贝至已创建的Java文件中,(仅供参考,我这边是完成后的。)

  

11 、至此从新建到完成编写代码已完成,下面再附上Selenide的一些方法介绍


Selenide使用  

Selenide是封装了Selenium的一些方法,所以写法与Selenium类似。由于Selenide是基于webdriver的一个工具,所以操作对应网页或功能需要依赖网页中的id,name,

class或界面文字等,下面逐一介绍获取节点方式。

1、 By.id(“”),写法为Selenide.$(By.id("bottom_qlogin"))获取该节点的方式在浏览器选中要寻找的输入框或者目标功能区(推荐google或火狐)右键

选择检查或审查元素,找到输入框内对应的ID

2、 By.name(“”),写法为Selenide.$(By.name("password"))获取该节点的方式在浏览器选中要寻找的输入框或者目标功能区(推荐google或火狐)右键

选择检查或审查元素,找到输入框内对应的name。

3、 By.cssSelector(“”),写法为Selenide.$(By.cssSelector(".login"))获取该节点的方式在浏览器选中要寻找的输入框或者目标功能区(推荐google或火狐)右键

选择检查或审查元素,找到输入框内对应的class ,需要注意的是,CSSSelector中class的写法需要在前面加上“ .”

4、 By.linkText(),写法为Selenide.$(By.linkText("cesdedsdf"));此方法主要功能为寻找界面上对应元素。

5、Configuration.browser = "chrome"; 此方法为设置打开的浏览器,需要默认安装的chrome,并且目前发现如果版本超过51可能无法启动。

6、Selenide.open("http://i.qq.com/"); 打开指定网址

7、Selenide.switchTo().frame("login_frame"); 切换到指定iframe

8、Selenide.sleep(5000); 休眠,等待时间,单位为毫秒

5、  Selenide常用的一些包

a)        import static com.codeborne.selenide.Condition.text,引入此包后,可使用方法shouldHave(text(""));

b)        importorg.junit.Assert,引入此包后可使用方法Assert.assertEquals("",Selenide.title());

c)        以上两个包主要实现的功能为判断或断言

6、  .click();方法,主要是实现某些功能或按钮的点击

7、  sendKeys(arg2);用来传值。

8、  .hover();模拟鼠标滑过某个元素.





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值