本周的NuGet包:F# 框架的Canopy web 测试


[原文发表地址] NuGet Package of the Week: Canopy Web Testing Framework with F#

[原文发表时间] 2014 –5-25

最近我一直在探索自动化浏览器测试,并且由于一些不相关的原因退出了F#。然而,当你结合自动化浏览器和F#,你会想到 “canopy”.“canopy”是“F# rictionless 网页测试”框架,它结合了Selenium的灵活性和F#语言的简洁性。F#比C#更简洁。 并且引起很多.NET 源代码开发组织的关注。人们正在为自己创造基于F#这种特定语言的领地。

你已经拥有F#,或者你已经在用F#,但却没有意识到。如果你真没有,这里有很多免费得到F#的方法。你可以免费使用VS2013desktop express上带有的F#和Visual F# Tools 3.1.1 .

F#是开源的,并且是跨平台的。它可以在linux, Mac OS X,安卓,IOS和windows系统以及HTML5和GPUs上运行。F#是免费使用的并且拥有OSI认可的源代码许可证。

即使你不想安装任何东西,你现在就可以在浏览器上学习F#。浏览一下: http://www.tryfsharp.org/

也可以浏览FunScript, which is F# to JavaScript!不相信这些?试试Pacman using F# and JavaScriptsource!

image

无论如何,回到Canopy中, 创建一个新的控制台应用程序,并且NuGet在canopy包里。

image

Nuget包将会作为一个基础被引进到Selenium中。

试试我贴在这的“hello wrold”网页测试的例子。

open canopy
open runner
open System
 
//start an instance of the firefox browser
start firefox
 
//this is how you define a test
"taking canopy for a spin" &&& fun _ ->
    //this is an F# function body, it's whitespace enforced
 
    //go to url
//these are similar to C# using statements
    url "http://lefthandedgoat.github.io/canopy/testpages/"
 
    //assert that the element with an id of 'welcome' has
    //the text 'Welcome'
    "#welcome" == "Welcome"
 
    //assert that the element with an id of 'firstName' has the value 'John'
    "#firstName" == "John"
 
    //change the value of element with
    //an id of 'firstName' to 'Something Else'
    "#firstName" << "Something Else"
 
    //verify another element's value, click a button,
    //verify the element is updated
    "#button_clicked" == "button not clicked"
    click "#button"
    "#button_clicked" == "button clicked"
 
//run all tests
run()
 
System.Console.WriteLine("press [enter] to exit")
System.Console.ReadLine() |> ignore
 
quit()

很棒,它就可以工作了。 你可以像运行其他.Net的应用程序一样来运行这个.Net 应用程序,就像大多数人说的一样,无论使用什么语言写的,当你发布应用程序的时候都应该包括调试内容。不需要安装F#或者其他的环境到调试机器上。

image

你可以用canopy做各种各样的测试,比如:

//start a bunch of browsers and switch around
start firefox
let mainBrowser = browser
start chrome
let secondBrowser = browser
//switch back to mainBrowser after opening secondBrowser
switchTo mainBrowser
 
//take screenshots
let path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\canopy\"
let filename = DateTime.Now.ToString("MMM-d_HH-mm-ss-fff")
screenshot path filename
 
//get an element
element "#firstName" |> someParent
 
//press buttons
press tab
press enter
press down
press up
press left
press right
 
//check and click things
check "#yes"
click "#login"
 
//or even drag things!
drag ".todo" ".inprogress"

顺便说一下,canopy库构建它自己使用的是FAKE,我们上周讨论过的F#的构建系统!去看看这些项目并提出帮助或者支持。最近,在.Net上有很多有趣的开放资源, 那些可能是不太引人注意。

相关链接:


Comments (0)

Skip to main content