Ini adalah proyek studio Katalon sederhana untuk tujuan demonstrasi. Anda dapat memeriksanya ke PC Anda dan menjalankannya dengan Anda Katalon Studio.
Proyek ini menyajikan pekerjaan untuk masalah yang saya ajukan dalam diskusi di forum Katalon "Google Chrome jatuh di PC saya ---- 2 alasan ditemukan"
Setelah mengkloning proyek di PC Anda, Anda ingin membuka proyek di Katalon Studio.
Proyek ini dikembangkan dengan Katalon Studio Ver5.4.1.
Pada awalnya, periksa profil eksekusi. Di profil default Anda akan menemukan 2 variabel global: KATALONSTUDIO_HOME
, DRIVERLOG_OUTPUT_DIRECTORY
. Harap ubah nilainya agar sesuai dengan lingkungan Anda.
Pilih salah satu kasus uji dan jalankan.
Nama Kasus Uji | Apa yang dilakukannya | hasil yang diharapkan |
---|---|---|
TC1_defaultWayOfOpeningBrowser | memanggil WebUI.openBrowser() seperti biasa | akan berhasil |
TC2_openOrdinaryChrome | Instantiates Chromedriver tanpa opsi tambahan, dan biarkan Katalon Studio menggunakannya | akan berhasil |
TC3_openChromeWithSwitches | Instantiates Chromedriver dengan opsi tambahan, dan biarkan Katalon Studio menggunakannya. | akan gagal |
Seperti "Google Chrome macet di PC saya ---- 2 Alasan Ditemukan" dijelaskan, Katalon Studio di PC saya selalu gagal untuk membuka browser Google Chrome. Alasan saya mengetahuinya adalah sebagai berikut.
--disable-extensions
. Ini dibuktikan dengan melihat file chromedriver.log.Kontradiksi ini membuat Google Chrome gila; itu macet.
Apa itu 'Extension-Install-Extension'? --- Silakan merujuk ke https://getadmx.com/?category=chrome&policy=google.policies.chrome::ExtensionInstallForcelist
Dengan melihat file log chromedriver.exe, saya menemukan bahwa studio Katalon memberi tahu Chromedriver untuk menghasilkan perintah untuk memulai chrome.exe dengan sakelar --disable-extensions
. Sakelar ini menyebabkan masalah dengan ForceInstalledEdextensions. Oleh karena itu saya ingin memulai krom entah bagaimana tanpa-sakelar --disable-extension
.
Setelah banyak pencarian di forum Katalon saya mendapat ide:
org.selenium.org.openqa.selenium.chrome.ChromeDriver
. Di sini saya tidak akan menentukan-sakelar --disable-extensions
.com.kms.katalon.core.webui.driver.DriverFactory#changeWebDriver()
. Lihat cuplikan TC2_openOrdinaryChrome
berikut:
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()
Saya belajar tentang DriverFactory#changeWebdriver () dalam diskusi di https://forum.katalon.com/discussion/comment/15164#comment_15164
Seperti yang ditunjukkan TC2_openOrdinaryChrome
, saya telah berhasil membuka browser Chrome di PC saya dengan ForceInstalledEdextensions terpasang, dan menjalankan tes dengan Chrome. Saya senang tentang itu.
Sekarang saya dapat menjelaskan kepada perguruan tinggi saya di tempat kerja: "Anda dapat menjalankan tes studio Katalon dengan Google Chrome di PC kami yang dikelola dengan baik, meskipun sedikit trik yang diperlukan".
Ketika saya mengeksekusi TC1_DefaultWayofopeningBrowser, saya menemukan perintah berikut dihasilkan oleh chromedriver.exe. Perhatikan bahwa sakelar --disable-extention
diatur.
"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:, |
Ketika saya mengeksekusi tc2_openordinarychrome, saya menemukan perintah berikut dihasilkan oleh chromedriver.exe. Perhatikan bahwa tidak ada sakelar --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:,
Di sini saya membandingkan dua perintah ini. Mereka serupa tetapi tidak identik.
Perintah TC1 | Perintah TC2 |
---|---|
"C: Program Files (x86) Google Chrome Application chrome.exe" | "C: Program Files (x86) Google Chrome Application chrome.exe" |
--chrome.switches | |
--Sinable-background-networking | --Sinable-background-networking |
--deteksi phishing-side-phishing yang dapat disingkirkan | --deteksi phishing-side-phishing yang dapat disingkirkan |
--default-apps-default | --default-apps-default |
--disable-extensions | |
--Disable-Extensions-Except = "C: Users username appdata local temp scoped_dir9548_2256 internal" | |
--Sisable-hang-monitor | --Sisable-hang-monitor |
--orang yang dapat diblokir | --orang yang dapat diblokir |
--orang yang dapat disingkirkan-di-repost | --Sen-proppt-on-Report |
--Sin-Sync | --Sin-Sync |
--Sen-sumber daya-orang | --Sen-sumber daya-orang |
--Senable-logging | --Senable-logging |
--force-fieldtrials = SiteisolationExtensions/Control | --force-fieldtrials = SiteisolationExtensions/Control |
--Ignore-sertifikat-kesalahan | --Ignore-sertifikat-kesalahan |
--log-level = 0 | --log-level = 0 |
--metrics-Recording saja | --metrics-Recording saja |
--No-First-Run | --No-First-Run |
--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: USERS USERNAME APPDATA LOCAL TEMP SCOPED_DIR9548_25002" | --USER-DATA-DIR = "C: USERS USERNAME APPDATA LOCAL TEMP SCOPED_DIR8660_21653" |
data:, | data:, |
Di sini saya mengambil perbedaan antara perintah TC1 dan perintah TC2.
Saya mengacu pada daftar blog sakelar baris perintah kromium untuk menemukan arti sakelar ... Anda harus menunggu lebih dari 10 detik untuk respons
beralih, yang memiliki perbedaan | catatan |
---|---|
--chrome.switches | Ini tidak terdaftar di halaman blog di atas. Kemungkinan sakelar ini diabaikan oleh Chrome; Mungkin kesalahan dari Katalon Studio. |
--disable-extensions | Nonaktifkan ekstensi. |
--disable-extensions-except=... | Nonaktifkan ekstensi kecuali yang ditentukan dalam daftar yang dipisahkan koma. |
--proxy-server=...;http=172.24.2.10:8080;... | Menggunakan server proxy yang ditentukan, menimpa pengaturan sistem. Sakelar ini hanya mempengaruhi permintaan HTTP dan HTTPS. |
--remote-debugging-port=12705 | *Mengaktifkan Remote Debug melalui HTTP pada port yang ditentukan. |
--user-data-dir=... | Direktori di mana browser menyimpan profil pengguna. |
Adapun --proxyserver=xxxx
, saya pikir itu tidak bermakna. Karena browser Chrome saya sudah dikonfigurasi dengan info proxy. Itu tidak perlu diinstruksikan oleh Katalon Studio of Proxy Info.
Adapun --remote-debugging-port=12705
sakelar, saya menemukan deskripsi di https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.html. Saya membuat satu lagi test case TC3_openChromeWithSwitches
dan menjalankannya untuk melihat apa yang terjadi. Hasilnya menarik. TC3 berhasil membuka browser Chrome tetapi Katalon Studio gagal berkomunikasi dengan chrome. Katalon Studio memancarkan pesan berikut:
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
Saya mengulangi mengeksekusi TC1 dan TC2 dan menemukan bahwa nomor port tampaknya dipilih secara dinamis: 12705, 12033, 12452, 12504, 12067, 12986, ...
OK, saya tidak boleh secara eksplisit menentukan --remote-debugging-port=xxxxx
. Saya harus pergi sebagai default.
Browser Chrome di PC perusahaan saya memiliki forceInstalledEdextensions yang diinstal. Saya tidak bisa menghapusnya. Jadi saya akan menerapkan trik TC2_openOrdinaryChrome
untuk menjalankan tes saya di Katalon Studio dengan Chrome.