Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Webページのリンク切れを見つける話(Katalon Studioで)

この記事は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 を選択することができます。

main

Test Cases/mainをマウスで選択したあと、GUIの右上の方にある緑色の三角形のボタン GreenArrowButton.png
をクリックすると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個から構成されています。コードへのリンクを下記に列挙します。

これらソースの詳細をここで述べることはしません。これを読み解くにはJava/Groovy言語によるプログラミングのスキルが前提となります。サンプルコードはごく短い。JavaプログラミングはできるがKatalon Studioのことは未だご存知ない人が、Katalon Studioで自分に役立つテストツールをモノにする手本として手頃な難易度であろうと思います。

補足説明

Katalon Studioのインストール、チュートリアル

Katalon Studioをどうやってインストールするか、最初の一歩を学ぶにはどこから行けばいいか? 公式ドキュメントは下記にあります。

充実していますが全部英語です。ちょっと英語は...という方は下記の記事も参考にしてください。

Proxyのこと

Katalon Studio ver7.xはインターネット上のKatalon社のサーバと通信してライセンスを認証しようとします。もしもあなたが職場のイントラネット上にあるPCを使っていて会社のProxyサーバを経由してインターネットにアクセスする必要があるならば、Katalon StudioにProxyの設定をする必要があります。Proxyの設定ができていなくてライセンスの認証が失敗するとKatalon Studioを使い始めることすらできません。下記の公式ドキュメントの説明を参考にしてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What are the problem?