本周的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#。浏览一下: https://www.tryfsharp.org/
也可以浏览FunScript, which is F# to JavaScript!不相信这些?试试Pacman using F# and JavaScript 和 source!
无论如何,回到Canopy中, 创建一个新的控制台应用程序,并且NuGet在canopy包里。
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 "https://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#或者其他的环境到调试机器上。
你可以用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上有很多有趣的开放资源, 那些可能是不太引人注意。
相关链接: