F#でブラウザ操作を自動化できるツール canopy を触ってみる

仕事で使う機会はあまり無いですが、関数型言語でテスト自動化とか出来るのかなと思って色々調べたところ、F#でブラウザを操作できるcanopyというツールを見つけました。
F#というところがまたちょうどいいので、まずは触ってどんなものか見てみたいと思います。

参考にしたページ

公式のGetting Startedの通りにしました。

canopyでブラウザを動かしてみる

1. VisualStudioでプロジェクトを作成

start-canopy_1

テンプレートはVisualF#, コンソールアプリケーションを選択します。

2. パッケージマネージャーコンソールを表示

start-canopy_2

プロジェクトができたら、ツール→NuGetパッケージマネージャー→パッケージマネージャーコンソールを選択。画面下部にパッケージマネージャーコンソールが出てきます。

3. canopyをインストール

start-canopy_3

Install-Package canopyを入力し、Enter.
公式ページではinstall-package canopyと小文字で書いてありますが、これだとインテリセンスが効きませんでした。環境によるかも。
少し(私の環境で3,4分)時間がかかりますが、待っていると終了します。

start-canopy_4

4. 公式ページのコードをコピペして実行

//these are similar to C# using statements
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
    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()

printfn "press [enter] to exit"
System.Console.ReadLine() |> ignore

quit()

上記をコピペして実行すると、Firefoxが立ち上がって、サンプルページを操作。コンソールに結果が表示されます。

start-canopy_5

かなり簡単に導入できました。

公式ドキュメント見ながら、どんなことできるのかもう少し遊んでみようと思います。日本語情報がほぼ無いのでブログに書くのにちょうどよさそうですし。

この記事を書いた人

yoshikiito

都内でテストエンジニア&ブロガーをやっている@yoshikiitoです。

ソフトウェアエンジニアの学習方法や成長するための考え方、会社に依存せず自分の力で生きていけるエンジニアになる方法などについて興味があります。
こういった方法や考え方、自分が試したことなどをブログを通じて発信します。

仕事は主にソフトウェアテストやテスト自動化。
趣味は浦和レッズと読書と技術書を買って積むこと。

技術評論社から本を出すのが夢

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします