zoukankan      html  css  js  c++  java
  • VS2010中使用 SpecFlow + Selenium.WebDriver

    安装(VS扩展、程序包)

    【工具】->【扩展管理器】,安装SpecFlow

    【工具】->【库程序包管理】->【程序包管理器控制台】

    PM> Install-Package SpecFlow -Version 1.9.0
    PM> Install-Package NUnit
    PM> Install-Package Selenium.WebDriver
    PM> Install-Package Should

    使用中文

    # language: zh-CN

    and * ,而且,并且,同时
    background 背景
    but * ,但是
    examples 例子
    feature 功能
    given * ,假如,假设,假定
    scenario 场景,剧本
    scenarioOutline 场景大纲,剧本大纲
    then * ,那么  
    when * ,当

    我想开始新游戏

    作为破译者/我想开始新游戏.feature

    作为破译者/我想开始新游戏Steps.cs

     1 using OpenQA.Selenium;
     2 using OpenQA.Selenium.Firefox;
     3 using Should;
     4 using TechTalk.SpecFlow;
     5 
     6 namespace CodeBreakerGame.Specs.作为破译者
     7 {
     8     [Binding]
     9     public class 我想开始新游戏Steps
    10     {
    11         private IWebDriver driver = new FirefoxDriver();
    12 
    13         [Given(@"游戏还没有开始")]
    14         public void 假如游戏还没有开始()
    15         {
    16             driver.Navigate().GoToUrl("http://localhost:1387/Game/Index");
    17         }
    18         
    19         [When(@"我开始新游戏")]
    20         public void 当我开始新游戏()
    21         {
    22             driver.FindElement(By.TagName("button")).Click();
    23         }
    24         
    25         [Then(@"我应该看到""(.*)""")]
    26         public void 那么我应该看到(string message)
    27         {
    28             driver.FindElement(By.TagName("div")).Text.ShouldContain(message);
    29         }
    30         
    31         [AfterScenario]
    32         public void AfterScenario()
    33         {
    34             driver.Quit();
    35         }
    36     }
    37 }

    我想提交猜测的密码

    作为破译者/我想提交猜测的密码.feature

      

    作为破译者/我想提交猜测的密码Steps.feature

     1 using System;
     2 using OpenQA.Selenium;
     3 using OpenQA.Selenium.Firefox;
     4 using Should;
     5 using TechTalk.SpecFlow;
     6 
     7 namespace CodeBreakerGame.Specs.作为破译者
     8 {
     9     [Binding]
    10     public class 我想提交猜测的密码Steps
    11     {
    12         private IWebDriver driver = new FirefoxDriver();
    13 
    14         [Given(@"真实密码是""(.*)""")]
    15         public void 假如真实密码是(int code)
    16         {
    17             driver.Navigate().GoToUrl("http://localhost:1387/Game/Guess/" + code.ToString());
    18         }
    19         
    20         [When(@"我猜""(.*)""")]
    21         public void 当我猜(int guess)
    22         {
    23             driver.FindElement(By.Id("Guess")).SendKeys(guess.ToString());
    24             driver.FindElement(By.TagName("button")).Click();
    25         }
    26         
    27         [Then(@"标记为""(.*)""")]
    28         public void 那么标记为(string mark)
    29         {
    30             driver.FindElement(By.TagName("strong")).Text.ShouldEqual(mark);
    31         }
    32 
    33         [AfterScenario]
    34         public void AfterScenario()
    35         {
    36             driver.Quit();
    37         }
    38     }
    39 }

    Action

     1 [HttpPost]
     2 public ActionResult Guess(string code, FormCollection collection)
     3 {
     4     var guess = collection["Guess"];
     5             
     6     var mark = "";
     7     for (int i = 0; i < code.Length; i++)
     8     {
     9         if (code[i] == guess[i])
    10             mark += "+";
    11     }
    12 
    13     for (int i = 0; i < code.Length; i++)
    14     {
    15         for (int j = 0; j < code.Length; j++)
    16         {
    17             if (i != j && code[i] == guess[j])
    18                 mark += "-";
    19         }
    20     }
    21 
    22     return View(new[] { guess, mark });
    23 }

    测试结果

    源代码

    CodeBreakerGame.rar

    说明:由于受文件大小的限制,压缩包里删除了文章开头提到的4个库程序包

    Selenium和Firefox版本兼容性对照表

    Selenium Firefox
    2.53.1 47.0.1

     说明:需要注意Selenium.WebDriver和Firefox的版本,如果不兼容可能导致测试运行不了

    参考文献

    [1] http://www.specflow.org/

    [2] https://github.com/cucumber/gherkin/blob/master/gherkin-languages.json

    [3] https://github.com/SeleniumHQ/selenium

    [4] http://seleniumhq.github.io/selenium/docs/api/dotnet/

    [5] http://www.specflow.org/documentation/

  • 相关阅读:
    《高等应用数学问题的MATLAB求解》——第4章习题代码
    《高等应用数学问题的MATLAB求解》——第3章习题代码
    《高等应用数学问题的MATLAB求解》——第2章习题代码
    2020年高考数学全国一卷第16题
    LR&PCA&KPCA
    package.json.lock
    Charles 抓 iphone 手机包
    竞赛196
    竞赛197
    js编程语言!!!!
  • 原文地址:https://www.cnblogs.com/tuty/p/5538735.html
Copyright © 2011-2022 走看看