zoukankan      html  css  js  c++  java
  • idea中cucumber环境搭建

    一、新建Maven类项目

    二、在pom.xml中添加依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <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>Cucumber_FirstTest</groupId>
    <artifactId>Cucumber_FirstTest</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-core</artifactId>
    <version>1.2.3</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>1.2.3</version>
    </dependency>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>1.2.3</version>
    </dependency>
    <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.47.1</version>
    </dependency>
    <dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    </dependency>
    <dependency>
    <groupId>org.picocontainer</groupId>
    <artifactId>picocontainer</artifactId>
    <version>2.14</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>1.2.3</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-core</artifactId>
    <version>1.2.5</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>1.2.5</version>
    </dependency>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>1.2.5</version>
    </dependency>
    <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.47.1</version>
    </dependency>
    <dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.12.4</version>
    </dependency>
    <dependency>
    <groupId>org.picocontainer</groupId>
    <artifactId>picocontainer</artifactId>
    <version>2.14</version>
    </dependency>
    <dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>1.2.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.testng/testng -->
    <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.testng/testng -->
    <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.8.8</version>
    <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/top.jfunc.common/converter -->
    <dependency>
    <groupId>top.jfunc.common</groupId>
    <artifactId>converter</artifactId>
    <version>1.8.0</version>
    </dependency>
    <dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180813</version><!--注意:20160810版本不支持JSONArray-->
    </dependency>
    <dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.8.21</version>
    </dependency>
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.5</version>
    </dependency>

    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.0-alpha1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client -->
    <dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.5.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.arronlong/httpclientutil -->
    <dependency>
    <groupId>com.arronlong</groupId>
    <artifactId>httpclientutil</artifactId>
    <version>1.0.4</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.orhanobut/logger -->
    <dependency>
    <groupId>com.orhanobut</groupId>
    <artifactId>logger</artifactId>
    <version>2.2.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.mtvnet.boxspring.modules/boxspring-http-objects-holder -->
    <dependency>
    <groupId>com.mtvnet.boxspring.modules</groupId>
    <artifactId>boxspring-http-objects-holder</artifactId>
    <version>1.0.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.github.kkontus.stringhelper/stringhelper -->
    <dependency>
    <groupId>com.github.kkontus.stringhelper</groupId>
    <artifactId>stringhelper</artifactId>
    <version>1.0.7</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp-urlconnection -->
    <dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp-urlconnection</artifactId>
    <version>4.2.2</version>
    </dependency>
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
    <dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.1.0</version>
    </dependency>

    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.4.2</version>
    </dependency>


    </dependencies>
    <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
    <forkMode>once</forkMode>
    <argLine>-Dfile.encoding=UTF-8</argLine>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
    <source>7</source>
    <target>7</target>
    </configuration>
    </plugin>
    </plugins>
    </build>

    </project>

    2、点击右侧Maven按钮,双击test,下载相关插件;

     3、插件下载完成后,点击Maven弹窗中的刷新图标(第一个),文件中不再有红色报错字体即可。

    三、创建feature文件

     

     @RunWith(Cucumber.class) 这是一个运行器 ,指用Cucumber来运行测试

    @ CucumberOptions中的features,用于指定我们项目中要运行的feature的目录

    @ CucumberOptions中的format,用于指定我们项目中要运行时生成的报告,并指定之后可以在target目录中找到对应的测试报告

    @ CucumberOptions中的glue,用于指定项目运行时查找实现step定义文件的目录

    RunCukesTest :
    package com.cucumber.action;

    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;
    import org.junit.runner.RunWith;

    @RunWith(Cucumber.class)
    @CucumberOptions(
    features = {"src/main/resources/feature/"},
    format = {"pretty", "html:target/cucumber", "json:target/cucumber.json"},
    glue = {"cucumberStep"}, //步骤目录
    tags = {"@FunctionalTest"} //标签走值
    )
    public class RunCukesTest {

    }

    Feature: 百度搜索
    打开百度进行搜索


    @FunctionalTest //标签,可设置按标签走值

    Scenario: 百度搜索selenium
    Given Go to baidu home
    When I find baidu logo
    And Type the search text "selenium"
    And Click the submit
    Then Wait the query result


    package cucumberStep;

    import cucumber.api.Scenario;
    import cucumber.api.java.en.And;
    import cucumber.api.java.en.Given;
    import cucumber.api.java.en.Then;
    import cucumber.api.java.en.When;
    import org.junit.Assert;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;

    import java.util.concurrent.TimeUnit;

    public class BaiduSearchStepfs {
    private WebDriver driver;


    @Given("^Go to baidu home$")
    public void go_to_baidu_home() throws Exception {
    System.setProperty("webdriver.chrome.driver", "E:\fxp\chromedriver.exe");
    driver = new ChromeDriver();
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    driver.get("http://www.baidu.com/");
    }

    @When("^I find baidu logo")
    public WebElement i_find_baidu_logo() {
    WebDriverWait wait = new WebDriverWait(driver, 10);
    WebElement element = wait.until(ExpectedConditions.visibilityOf
    (driver.findElement(By.xpath("//div[@id='lg']/img"))));

    return element;
    }


    @And("^Type the search text "([^"]*)"$")
    public void type_the_search_text(String searchText) throws Throwable {
    driver.findElement(By.id("kw")).clear();
    driver.findElement(By.id("kw")).sendKeys(searchText);
    }

    @And("^Click the submit$")
    public void click_the_submit() {
    driver.findElement(By.id("su")).click();
    }

    @Then("^Wait the query result")
    public void wait_the_query_result() throws InterruptedException {
    Thread.sleep(10000);
    Assert.assertEquals("selenium_百度搜索", driver.getTitle());
    driver.close();
    driver.quit();
    }
    }


  • 相关阅读:
    ECMall模板开发文档
    ECmall错误:Call to a member function get_users_count() on a non-object
    剖析ECMALL的登录机制
    分析ECMall的注册与登录机制
    ECMall的MySQL数据调用的简单方法
    ECMall系统请求跳转分析
    Ecmall系统自带的分页功能
    ECMall注册机制简要分析
    [Ecmall]ECMALL目录结构设置与数据库表
    [ecmall]Ecmall 后台添加模板编辑区
  • 原文地址:https://www.cnblogs.com/ht22ht22/p/11846946.html
Copyright © 2011-2022 走看看