この記事はQiita Advent Calendar 2020の Selenium/Chrome DevTools Protocol/Appium カレンダーの2日目の記事です。
はじめに
わたしはWebアプリケーションのUIをテストする作業をソフトウェアで自動化する技術に関心があります。2018年1月以来わたしは Katalon Studio というソフトウェアに注目しています。以前、Qiitaに「Katalon Studioとはどんなソフトウエアか」を投稿して概要を紹介しました。
最近、Katalon Studioのユーザーforumを眺めていたら、"How can i find broken links in web pages?" (Webページのリンク切れを見つけるにはどうすればいいのか) という質問がふたつ三つ投稿されました。またか!と思いました。Finding broken links問題はWebUIテストに関するFAQのひとつです。私が2018年にKatalon Studioを触りはじめたとき最初に取り組んだのもリンク切れ検査でした。いまなら前より上手に解決できるだろうと思い、やってみました。Katalon Studioを役立てるサンプルとして紹介します。
サンプルのありか
GitHubにレポジトリを作り公開しました。
このレポジトリのReleasesページからプロジェクト一式をまとめたZIPファイルをダウンロードすることができます。
サンプルの説明
動作環境
わたしは下記の環境でサンプルを開発しました。
- Katalon Studio version 7.2.2
- macOS Catalina 10.15.7
Katalon StudioはJavaVMベースのソフトウェアでWindowsでもLinuxでも動きます。今回のサンプルコードはKatalon Studioの基本的なAPIだけを使っているので古いversion7.0.xでも動くはずです。
動かしてみよう
あなたがKatalon Studioを自分のPCにインストール済みであると前提します(インストール方法については後述)。
ReleasesページからZIPファイルをダウンロードしましょう。ZIPを展開してFindingBrokenLinksWithKatalonStudio
フォルダを任意の場所に位置付けます。Katalon Studioをstartしてプロジェクトをopenしましょう。
Katalon Studioのウインドウの左がわに Tests Explorer
とラベルされた四角い面があってその中をマウスでいじると Test Cases/main
を選択することができます。
Test Cases/main
をマウスで選択したあと、GUIの右上の方にある緑色の三角形のボタン
をクリックするとmain
が実行されます。
mainは何をするか
-
main
はブラウザを起動し、指定されたURLのWebページを開いて、ページの中にある<a href="url">
タグをすべて選び出します。そしてhref="url"
の部分に書かれたURLが実際にアクセス可能かどうかを検査します。 - アクセス可能かどうかを検査するために
main
はリンク先URLにたいしてHTTP GETリクエストを投げます。レスポンスが返されるのを待ってHTTPステータスコードとURL文字列の組を記録します。 -
main
はレスポンスのステータスコードを識別します。ステータスコードが 200, 301, 302 ならばOK、それ以外なら当該URLはリンク切れしていると判定します。 -
main
は Google検索の応答ページ( https://www.google.com/search?q=katalon )を検査する例を示していますが、任意のURL(複数)を列挙すればそれらを一度に検査することができます。 -
main
は切れているリンク先URLの数を数えます。 - もしもリンク切れがひとつ以上見つかったら
main
はテスト失敗を告げるメッセージを赤文字で表示して注意喚起します。もしもリンク切れが無ければ静かに終わります。 -
main
はできるだけ早く動けるように設計されています。とはいってもリンク先URLひとつ一つにHTTP GETリクエストを実際に投げて検査するのでそのぶんの時間はどうしてもかかります。
所要時間
たとえば https://www.google.com/search?q=katalon は106個の <a href="...">
タグを含んでいるのですが、このページを main
が検査するのにわたしの環境では103秒かかりました。まあ、人手で調べるのに比べればよほど早いと思います。
mainからの出力
https://www.google.com/search?q=katalon を指定してmain
を実行したら下記の診断レポートが出力されました。
*** All <a> elements in https://www.google.com/search?q=katalon ***
200 <a href=https://support.google.com/websearch/answer/181196?hl=ja>
301 <a href=https://www.google.co.jp/intl/ja/about/products?tab=wh>
200 <a href=https://accounts.google.com/ServiceLogin?hl=ja&passive=true&continue=https://www.google.com/search%3Fq%3Dkatalon&ec=GAZAAQ>
200 <a href=https://www.google.com/webhp?hl=ja&sa=X&ved=0ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQPAgI>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://www.google.com/search?q=katalon&source=lnms&tbm=vid&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoAXoECBoQAw>
200 <a href=https://www.google.com/search?q=katalon&source=lnms&tbm=isch&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoAnoECBoQBA>
200 <a href=https://www.google.com/search?q=katalon&source=lnms&tbm=nws&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoA3oECBoQBQ>
302 <a href=https://maps.google.com/maps?q=katalon&um=1&ie=UTF-8&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoBHoECBoQBg>
200 <a href=https://www.google.com/search?q=katalon&source=lnms&tbm=shop&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoAHoECBoQCg>
200 <a href=https://www.google.com/search?q=katalon&source=lnms&tbm=bks&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoAXoECBoQCw>
302 <a href=https://www.google.com/flights?q=katalon&source=lnms&tbm=flm&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoAnoECBoQDA>
200 <a href=https://www.google.com/search?q=katalon&source=lnms&tbm=fin&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_AUoA3oECBoQDQ>
200 <a href=https://www.google.com/preferences>
200 <a href=https://www.google.com/preferences?hl=ja&prev=https://www.google.com/search?q%3Dkatalon>
200 <a href=https://www.google.com/preferences?hl=ja&prev=https://www.google.com/search?q%3Dkatalon#languages>
302 <a href=https://www.google.com/setprefs?safeui=on&sig=0_Np3kHRCrNprTVuwnrWalmoz3JRo%3D&prev=https://www.google.com/search?q%3Dkatalon>
200 <a href=https://www.google.com/advanced_search?q=katalon&hl=ja>
302 <a href=https://www.google.com/history/optout?hl=ja>
200 <a href=https://www.google.com/history/privacyadvisor/search/unauth?utm_source=googlemenu>
200 <a href=https://support.google.com/websearch/?source=g&hl=ja>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=lr:lang_1ja&lr=lang_ja&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaEB8>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=qdr:h&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaECQ>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=qdr:d&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaECU>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=qdr:w&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaECY>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=qdr:m&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaECc>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=qdr:y&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaECg>
200 <a href=https://www.google.com/search?q=katalon&source=lnt&tbs=li:1&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQpwV6BAgaEC8>
200 <a href=https://www.katalon.com/>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:AY6Tl3FzBkMJ:https://www.katalon.com/+&cd=1&hl=ja&ct=clnk&gl=jp>
200 <a href=https://www.google.com/search?q=related:https://www.katalon.com/+katalon&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQHzAAegQIBhAG>
200 <a href=https://translate.google.com/translate?hl=ja&sl=en&u=https://www.katalon.com/&prev=search&pto=aue>
200 <a href=https://www.katalon.com/sign-up/>
200 <a href=https://www.katalon.com/pricing/>
200 <a href=https://www.katalon.com/katalon-studio/>
200 <a href=https://docs.katalon.com/katalon-studio/docs/index.html>
200 <a href=https://qiita.com/kazurayam/items/aece5d314f84893a0a14>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:vHAftIdtb6EJ:https://qiita.com/kazurayam/items/aece5d314f84893a0a14+&cd=2&hl=ja&ct=clnk&gl=jp>
200 <a href=https://qiita.com/RyomaMaeda/items/0d02c1687e8bc4e57944>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:RNVBRUJGoqYJ:https://qiita.com/RyomaMaeda/items/0d02c1687e8bc4e57944+&cd=3&hl=ja&ct=clnk&gl=jp>
200 <a href=https://blog.engineer.adways.net/entry/advent_calendar_2018/07>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:k2-k8oSBCXIJ:https://blog.engineer.adways.net/entry/advent_calendar_2018/07+&cd=4&hl=ja&ct=clnk&gl=jp>
200 <a href=https://chrome.google.com/webstore/detail/katalon-recorder-selenium/ljdobmomdgdljniojadhoplhkpialdid?hl=ja>
200 <a href=https://www.itreview.jp/products/katalon-studio/reviews>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:3NPH48fjbtwJ:https://www.itreview.jp/products/katalon-studio/reviews+&cd=6&hl=ja&ct=clnk&gl=jp>
200 <a href=http://take-web.com/cad/2019/03/katalon02/>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=http://webcache.googleusercontent.com/search?q=cache:J8Ty-CNXBqAJ:take-web.com/cad/2019/03/katalon02/+&cd=7&hl=ja&ct=clnk&gl=jp>
200 <a href=https://devtab.jp/entry/internal/103>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:87OELWRWjQoJ:https://devtab.jp/entry/internal/103+&cd=8&hl=ja&ct=clnk&gl=jp>
200 <a href=https://www.sprasia.co.jp/blog/about-katalon-studio>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:bItVmyO2LCcJ:https://www.sprasia.co.jp/blog/about-katalon-studio+&cd=9&hl=ja&ct=clnk&gl=jp>
200 <a href=https://okometsubulog.hatenablog.com/entry/computer/katalon-recorder-190826>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://webcache.googleusercontent.com/search?q=cache:62oOYgH-tTkJ:https://okometsubulog.hatenablog.com/entry/computer/katalon-recorder-190826+&cd=10&hl=ja&ct=clnk&gl=jp>
200 <a href=https://www.google.com/search?q=katalon+studio+%E6%97%A5%E6%9C%AC%E8%AA%9E&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoAHoECBYQAQ>
200 <a href=https://www.google.com/search?q=Katalon+Chrome&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoAXoECBYQAg>
200 <a href=https://www.google.com/search?q=katalon+recorder+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E4%B8%80%E8%A6%A7&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoAnoECBYQAw>
200 <a href=https://www.google.com/search?q=Katalon+Studio+%E7%84%A1%E6%96%99&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoA3oECBYQBA>
200 <a href=https://www.google.com/search?q=Katalon+user-agent&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoBHoECBYQBQ>
200 <a href=https://www.google.com/search?q=Katalon+Studio+Enterprise&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoBXoECBYQBg>
200 <a href=https://www.google.com/search?q=Katalon+Selenium&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoBnoECBYQBw>
200 <a href=https://www.google.com/search?q=Katalon+Studio+license&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoB3oECBYQCA>
200 <a href=https://www.google.com/search?q=katalon+recorder+%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoCHoECBYQCQ>
200 <a href=https://www.google.com/search?q=Katalon+Studio+%E6%9C%89%E5%84%9F&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ1QIoCXoECBYQCg>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=10&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhA6>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=20&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhA8>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=30&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhA->
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=40&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhBA>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=50&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhBC>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=60&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhBE>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=70&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhBG>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=80&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhBI>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=90&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8tMDegQIGhBK>
200 <a href=https://www.google.com/search?q=katalon&ei=LOC5X770GIepoATj25GYCQ&start=10&sa=N&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ8NMDegQIGhBM>
200 <a href=https://www.google.com/search?q=katalon&tbm=isch&source=iu&ictx=1&fir=agH-OHUAGpr6oM%252Cs1xcty8VPvH_DM%252C%252Fg%252F11g0gdvypx&vet=1&usg=AI4_-kSzcTzeJR8PP1TPHUSzRMD567VD2A&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_B16BAgQEAM#imgrc=agH-OHUAGpr6oM>
200 <a href=https://www.google.com/search?q=katalon&tbm=isch&source=iu&ictx=1&fir=Pp6NM6wsYad_JM%252C2WIkL7xlWx0bNM%252C_&vet=1&usg=AI4_-kTyNReEfY30eUAwcMzIZ502DTioXw&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_h16BAgQEAU#imgrc=Pp6NM6wsYad_JM>
200 <a href=https://www.google.com/search?q=katalon&tbm=isch&source=iu&ictx=1&fir=li-VPjPjbHhdiM%252C2WIkL7xlWx0bNM%252C_&vet=1&usg=AI4_-kRRiS5q1J0r1B46J3Gr41Q76zCrKA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_h16BAgQEAc#imgrc=li-VPjPjbHhdiM>
200 <a href=https://www.google.com/search?q=katalon&tbm=isch&source=iu&ictx=1&fir=Zz_El5lR0OzrFM%252C2WIkL7xlWx0bNM%252C_&vet=1&usg=AI4_-kQFsQF_ebSW53jA63T7ccD95KGECg&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_h16BAgQEAk#imgrc=Zz_El5lR0OzrFM>
200 <a href=https://www.google.com/search?q=katalon&tbm=isch&source=iu&ictx=1&fir=pA44ogVw6OpwNM%252C2WIkL7xlWx0bNM%252C_&vet=1&usg=AI4_-kQ1cmGEuF8F5MaxhFZRNERpZLg-Ew&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ_h16BAgQEAs#imgrc=pA44ogVw6OpwNM>
200 <a href=https://www.google.com/search?source=univ&tbm=isch&q=katalon&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQiR56BAgQEAw>
200 <a href=https://en.wikipedia.org/wiki/Katalon_Studio>
200 <a href=https://en.wikipedia.org/wiki/Katalon_Studio>
200 <a href=https://www.google.com/search?q=katalon+studio+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&stick=H4sIAAAAAAAAAOPgE-LVT9c3NEw3SE8pqyyo0NLJKLfST87PyUlNLsnMz9Mvzk8rKU8sSrUqKMpPL0rMzc3MS1fIScxLL01MT13EqpWdWJKYk5-nUFxSmpKZr_C4efrj5rWPmzY8bl75uHn-4-bNQPaLFQ0vVs0DAMc_iVRsAAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQ6BMoADASegQICRAC>
200 <a href=https://www.google.com/search?q=Groovy&stick=H4sIAAAAAAAAAOPgE-LVT9c3NEw3SE8pqyyoUOLUz9U3MMoqtjDT0skot9JPzs_JSU0uyczP0y_OTyspTyxKtSooyk8vSszNzcxLV8hJzEsvTUxPXcTK5l6Un19WuYOVEQA2eCsDVgAAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQmxMoATASegQICRAD>
200 <a href=https://www.google.com/search?q=Katalon+Studio&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUELlaglnJ1vpJ-fn5ubnWRVnpqSWJ1YWL2Ll804sSczJz1MILilNyczfwcoIAAOBc2RJAAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQMSgAMBN6BAgNEAE>
200 <a href=https://www.google.com/search?q=Katalon+Studio&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUELlaglnJ1vpJ-fn5ubnWRVnpqSWJ1YWL2Ll804sSczJz1MILilNyczfwcoIAAOBc2RJAAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQzTooATATegQIDRAC>
200 <a href=https://www.google.com/search?q=Selenium&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUOLUz9U3SLYwsijT4nPOz83NzwvOTEktT6wsXsTKEZyak5qXWZq7g5URAM9rDMc6AAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQxA0wE3oECA0QBQ>
200 <a href=https://www.google.com/search?q=appium&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUIJwk00tTQyLqgy1-Jzzc3Pz84IzU1LLEyuLF7GyJRYUZJbm7mBlBACP5TAsPAAAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQxA0wE3oECA0QBw>
200 <a href=https://www.google.com/search?q=testcomplete&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUOLSz9U3MKlMKzBP0uJzzs_Nzc8LzkxJLU-sLF7EylOSWlySnJ9bkJNakrqDlREAq6gCxT8AAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQxA0wE3oECA0QCQ>
200 <a href=https://www.google.com/search?q=ranorex&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUOLSz9U3MDLPMbZI0eJzzs_Nzc8LzkxJLU-sLF7Eyl6UmJdflFqxg5URAG1WHk46AAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQxA0wE3oECA0QCw>
200 <a href=https://www.google.com/search?q=JMeter&stick=H4sIAAAAAAAAAONgFuLVT9c3NEw3SE8pqyyoUOLUz9U3MKksSM7Q4nPOz83NzwvOTEktT6wsXsTK5uWbWpJatIOVEQDvJGOxOAAAAA&sa=X&ved=2ahUKEwi-uvbmn5XtAhWHFIgKHeNtBJMQxA0wE3oECA0QDQ>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://www.google.com/search?q=katalon#>
301 <a href=https://support.google.com/websearch?p=ws_settings_location&hl=ja>
301 <a href=https://support.google.com/websearch/?p=ws_results_help&hl=ja&fg=1>
200 <a href=https://www.google.com/search?q=katalon#>
200 <a href=https://policies.google.com/privacy?hl=ja&fg=1>
200 <a href=https://policies.google.com/terms?hl=ja&fg=1>
Broken/All: 0/106
このWebページには<a href="..">
が106個あってそのうちリンク切れは無いと診断されました。
いっぽうリンク切れを含む別のWebページを指定するとmain
は最後に下記のようなExceptionを投げて注意喚起をしてくれました。
2020-11-22 13:30:00.532 INFO c.k.katalon.core.main.TestCaseExecutor - START Test Cases/main
...
Broken/All: 6/167
2020-11-22 13:31:29.095 INFO c.k.katalon.core.main.TestCaseExecutor - END CALL Test Cases/findBrokenAnchorsInPage
2020-11-22 13:31:29.095 INFO c.k.katalon.core.main.TestCaseExecutor - --------------------
2020-11-22 13:31:29.108 ERROR com.kms.katalon.core.util.KeywordUtil - ❌ one or more broken links are found
2020-11-22 13:31:29.118 ERROR c.k.katalon.core.main.TestCaseExecutor - ❌ Test Cases/main FAILED.
Reason:
com.kms.katalon.core.exception.StepFailedException: one or more broken links are found
at com.kms.katalon.core.util.KeywordUtil.markFailed(KeywordUtil.java:19)
at com.kms.katalon.core.util.KeywordUtil$markFailed.call(Unknown Source)
at main.run(main:21)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at com.kms.katalon.core.main.TestCaseExecutor.runScript(TestCaseExecutor.java:339)
at com.kms.katalon.core.main.TestCaseExecutor.doExecute(TestCaseExecutor.java:330)
at com.kms.katalon.core.main.TestCaseExecutor.processExecutionPhase(TestCaseExecutor.java:309)
at com.kms.katalon.core.main.TestCaseExecutor.accessMainPhase(TestCaseExecutor.java:301)
at com.kms.katalon.core.main.TestCaseExecutor.execute(TestCaseExecutor.java:235)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:114)
at com.kms.katalon.core.main.TestCaseMain.runTestCase(TestCaseMain.java:105)
at com.kms.katalon.core.main.TestCaseMain$runTestCase$0.call(Unknown Source)
at TempTestCase1606019395915.run(TempTestCase1606019395915.groovy:25)
2020-11-22 13:31:29.138 INFO c.k.katalon.core.main.TestCaseExecutor - END Test Cases/main
コード
FindingBrokenLinksWithKatalonStudioプロジェクトは2つのGroovyスクリプトとGroovyクラス1個から構成されています。コードへのリンクを下記に列挙します。
- Test Cases/main
- Test Cases/findBrokenAnchorsInPage
- Keywords/com/kazurayam/ksbackyard/LinkTestUtils.groovy
これらソースの詳細をここで述べることはしません。これを読み解くにはJava/Groovy言語によるプログラミングのスキルが前提となります。サンプルコードはごく短い。JavaプログラミングはできるがKatalon Studioのことは未だご存知ない人が、Katalon Studioで自分に役立つテストツールをモノにする手本として手頃な難易度であろうと思います。
補足説明
Katalon Studioのインストール、チュートリアル
Katalon Studioをどうやってインストールするか、最初の一歩を学ぶにはどこから行けばいいか? 公式ドキュメントは下記にあります。
充実していますが全部英語です。ちょっと英語は...という方は下記の記事も参考にしてください。
- Katalon Studioのダウンロードとインストール by Yoshiki Itoさん
- Katalon StudioでRecordしてみた by kazurayam
- Katalon Studioでテストを自作した by kazurayam
- Katalon Studioでテストを自作した(2) by kazurayam
- Katalon Studio with aShotでスクリーンショットを取る by kazurayam
- Katalon Studio+MaterialsでWebサイトのスクリーンショットを整然と保存する by kazurayam
- Katalon StudioでVisual Testingを実現した by kazurayam
- あなたのWebサービスをVisual Testingする方法 by kazurayam
Proxyのこと
Katalon Studio ver7.xはインターネット上のKatalon社のサーバと通信してライセンスを認証しようとします。もしもあなたが職場のイントラネット上にあるPCを使っていて会社のProxyサーバを経由してインターネットにアクセスする必要があるならば、Katalon StudioにProxyの設定をする必要があります。Proxyの設定ができていなくてライセンスの認証が失敗するとKatalon Studioを使い始めることすらできません。下記の公式ドキュメントの説明を参考にしてください。