これは、デモンストレーションの目的のためのシンプルなKatalon Studioプロジェクトです。 PCでチェックして、Katalon Studioと一緒に実行できます。
このプロジェクトは、カタロンフォーラムでの議論で提起した問題の取り組みを提示します。
PCでプロジェクトをクローン化したら、Katalon Studioでプロジェクトを開設したいと思います。
このプロジェクトは、Katalon Studio Ver5.4.1で開発されました。
最初は、実行プロファイルを確認します。デフォルトのプロファイルには、2つのグローバル変数があります: KATALONSTUDIO_HOME
、 DRIVERLOG_OUTPUT_DIRECTORY
。環境に合うように値を変更してください。
テストケースのいずれかを選択して実行します。
テストケース名 | それがすること | 期待される結果 |
---|---|---|
TC1_defaultWayOfOpeningBrowser | 通常どおりWebUI.openBrowser() を呼び出します | 成功します |
TC2_openOrdinaryChrome | 追加のオプションなしでChromedriverをインスタンス化し、Katalon Studioに使用させてください | 成功します |
TC3_openChromeWithSwitches | Chromedriverを追加のオプションでインスタンス化し、Katalon Studioに使用させます。 | 失敗します |
「Google Chromeが私のPCでクラッシュしたため---- 2つの理由が見つかった」と説明していますが、PCのKatalon Studioは常にGoogle Chromeブラウザーを開くことができません。私が見つけた理由は次のとおりでした。
--disable-extensions
スイッチでChrome.exeを開始したいと考えています。これは、Chromedriver.logファイルを調べることで証明されます。この矛盾は、Google Chromeにクレイジーをもたらします。クラッシュします。
「強制インストールされた拡張」とは何ですか? --- https://getadmx.com/?category=chrome&policy=google.policies.chrome:: extensioninstaltallforcelistを参照してください
Chromedriver.exeのログファイルを見ると、Katalon StudioがChromedriverに、 --disable-extensions
スイッチを使用してChrome.exeを起動するコマンドを生成するように指示していることがわかりました。このスイッチは、forceinstalledextensionsの問題を引き起こします。したがって、 --disable-extension
スイッチなしで何らかの形でChromeを起動したい。
カタロンフォーラムで多くの検索の後、私はアイデアを得ました:
org.selenium.org.openqa.selenium.chrome.ChromeDriver
をインスタンス化する必要があります。ここでは、 --disable-extensions
スイッチを指定しません。com.kms.katalon.core.webui.driver.DriverFactory#changeWebDriver()
メソッドを呼び出すことで実行できます。 TC2_openOrdinaryChrome
の次のスニペットを参照してください。
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import com.kms.katalon.core.webui.driver.DriverFactory
System.setProperty('webdriver.chrome.driver', "C:/Katalon_Studio_Windows_64-5.4.1/configuration/resources/drivers/chromedriver_win32/chromedriver.exe")
System.setProperty('webdriver.chrome.logfile', "C:/temp/chromedriver_TC2.log")
// open Chrome browser and let Katalon Studio to use it
WebDriver driver = new ChromeDriver()
DriverFactory.changeWebDriver(driver)
// execute some steps
WebUI.navigateToUrl('http://demoaut.katalon.com')
WebUI.verifyElementPresent(findTestObject("Page_CURA Healthcare Service/a_Make Appointment"), 20)
// close the browser
WebUI.closeBrowser()
https://forum.katalon.com/discussion/comment/15164#comment_15164でのディスカッションで、driverfactory#changewebdriver()について学びました
TC2_openOrdinaryChrome
が示すように、私はPCのChromeブラウザをPCでインストールし、Chromeでテストを実行することができました。私はそれについて嬉しいです。
今、私は職場で私の同僚に説明することができます:「あなたは私たちのよく管理されているPCでGoogle Chromeを使用してKatalon Studioテストを実行することができますが、少しのトリックが必要ですが」。
TC1_DEFAULTWAYOFOOPNINGBROWSERを実行すると、次のコマンドがChromeDriver.exeによって生成されていることがわかりました。 --disable-extention
スイッチが設定されていることに注意してください。
"C:Program Files (x86)GoogleChromeApplicationchrome.exe" --chrome.switches --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-extensions --disable-extensions-except="C:UsersusernameAppDataLocalTempscoped_dir9548_2256internal" --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --ignore-certificate-errors --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --proxy-server=ftp=172.24.2.10:8080;http=172.24.2.10:8080;https=172.24.2.10:8080 --remote-debugging-port=12705 --test-type=webdriver --use-mock-keychain --user-data-dir="C:UsersusernameAppDataLocalTempscoped_dir9548_25002" data:, |
tc2_openordinarychromeを実行すると、次のコマンドがChromedriver.exeによって生成されていることがわかりました。 NO --disable-extension
スイッチが表示されないことに注意してください。
"C:Program Files (x86)GoogleChromeApplicationchrome.exe" --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --ignore-certificate-errors --load-extension="C:UsersusernameAppDataLocalTempscoped_dir8660_29138internal" --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12555 --test-type=webdriver --use-mock-keychain --user-data-dir="C:UsersusernameAppDataLocalTempscoped_dir8660_21653" data:,
ここでは、これら2つのコマンドを比較します。それらは似ていますが、同一ではありません。
TC1コマンド | TC2コマンド |
---|---|
「C:プログラムファイル(x86) Google Chrome Application Chrome.exe」 | 「C:プログラムファイル(x86) Google Chrome Application Chrome.exe」 |
--chrome.switches | |
- 配信可能なバックグラウンドネットワーキング | - 配信可能なバックグラウンドネットワーキング |
- 配信可能なクライアントサイドフィッシング検出 | - 配信可能なクライアントサイドフィッシング検出 |
-disable-default-apps | -disable-default-apps |
--disable-extensions | |
-disable-Extensions-exicte = "c: uses username appdata local temp scoped_dir9548_22256 internal" | |
- 配信可能なハンモニター | - 配信可能なハンモニター |
- 配信可能なポップアップブロッキング | - 配信可能なポップアップブロッキング |
- 配信可能なプロムトオンレポスト | -disable-prompt-on-report |
- 配信可能なシンク | - 配信可能なシンク |
-disable-web-resources | -disable-web-resources |
- enable-logging | - enable-logging |
- force-fieldtrials = siteisolationextensions/control | - force-fieldtrials = siteisolationextensions/control |
-IGNORE-CERTIFICATE-ERRORS | -IGNORE-CERTIFICATE-ERRORS |
-log-level = 0 | -log-level = 0 |
- メトリック録音のみ | - メトリック録音のみ |
- ノーファーストラン | - ノーファーストラン |
--PassWord-Store = Basic | --PassWord-Store = Basic |
-Proxy-Server = ftp = 172.24.2.10:8080; http = 172.24.2.10:8080; https = 172.24.2.10:8080 | |
-Remote-Debugging-Port = 12705 | -Remote-Debugging-Port = 12555 |
-Test-Type = WebDriver | -Test-Type = WebDriver |
-Use-Mock-KeyChain | -Use-Mock-KeyChain |
-user-data-dir = "c: uses username appdata local temp scoped_dir9548_25002" | -user-data-dir = "c: uses username appdata local temp scoped_dir8660_21653" |
データ:、 | データ:、 |
ここでは、TC1コマンドとTC2コマンドの間の不一致を拾いました。
Chromiumコマンドラインスイッチのブログリストを参照して、スイッチの意味を見つけました...応答を10秒以上待つ必要があります
違いがあるスイッチ | 注記 |
---|---|
--chrome.switches | これは上記のブログページにリストされていません。このスイッチはChromeによって無視される可能性があります。 Katalon Studioの間違いかもしれません。 |
--disable-extensions | 拡張機能を無効にします。 |
--disable-extensions-except=... | コンマ分離リストで指定されているものを除く拡張機能を除く拡張機能を無効にします。 |
--proxy-server=...;http=172.24.2.10:8080;... | 指定されたプロキシサーバーを使用し、システム設定をオーバーライドします。このスイッチは、HTTPおよびHTTPSリクエストのみに影響します。 |
--remote-debugging-port=12705 | *指定されたポートのHTTP上のリモートデバッグを有効にします。 |
--user-data-dir=... | ブラウザがユーザープロファイルを保存するディレクトリ。 |
--proxyserver=xxxx
スイッチについては、意味がないと思いました。私のChromeブラウザーは既にプロキシ情報で構成されているためです。プロキシ情報のKatalon Studioから指示する必要はありません。
--remote-debugging-port=12705
スイッチについては、https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.htmlで説明を見つけました。もう1つテストケースTC3_openChromeWithSwitches
を作成し、何が起こるかを確認するために実行しました。結果は面白かった。 TC3はChromeブラウザを開くことに成功しましたが、Katalon StudioはChromeと通信できませんでした。 Katalon Studioは次のメッセージを発しました。
Test Cases/TC3_openChromeWithSwitches FAILED because (of) org.openqa.selenium.WebDriverException: chrome not reachable
(Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 60.68 seconds
TC1とTC2の実行を繰り返して、ポート番号が動的に選択されているように見えることがわかりました:12705、12033、12452、12504、12067、12986、...
わかりました、明示的に指定するべきではありません--remote-debugging-port=xxxxx
。デフォルトのままにしておく必要があります。
私のコーポレートPCのChromeブラウザには、ForceInstallEdextensionsがインストールされています。削除できません。したがって、Chromeを使用してKatalon Studioでテストを実行するために、 TC2_openOrdinaryChrome
適用します。