這是一個簡單的Katalon Studio項目,用於演示目的。您可以將其檢查到PC上並與Katalon Studio一起執行。
該項目為我在Katalon論壇上的討論中提出的問題提供了一個工作,“ Google Chrome墜毀在我的PC上 - 2個原因”
將項目克隆到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上 - 發現的原因”所描述的那樣,我的PC上的Katalon Studio總是無法打開Google Chrome瀏覽器。我發現的原因如下。
--disable-extensions
Switch啟動Chrome.exe。通過查看chromedriver.log文件可以證明這一點。這種矛盾使Google Chrome瘋狂。它崩潰了。
什麼是“力安裝的擴展”? ---請參閱https://getadmx.com/?category=Chrome&policy=google.police.chrome :: extensionininstallforcelist
通過查看Chromedriver.exe的日誌文件,我發現Katalon Studio告訴Chromedriver生成一個命令,以啟動使用--disable-extensions
Switch啟動Chrome.exe。此開關引起了力納斯特爾延遲的問題。因此,我想以某種方式啟動Chrome,而無需--disable-extension
Switch。
在Katalon論壇上進行了許多搜索之後,我有了一個想法:
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#thexwebdriver()
正如TC2_openOrdinaryChrome
所表明的那樣,我設法使用安裝了ForceInstalledExtensions在PC上打開Chrome瀏覽器,並使用Chrome執行測試。我很高興。
現在,我可以向工作中的大學解釋:“您可以在我們管理好的PC上與Google Chrome一起運行Katalon Studio測試,儘管需要一些技巧”。
當我執行tc1_defaultwayoopeningbrowser時,我發現以下命令由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生成。請注意,沒有出現--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:,
在這裡,我比較了這兩個命令。它們是相似的,但不完全相同。
TC1命令 | TC2命令 |
---|---|
“ C: Program Files(X86) Google Chrome Chrome Application Chrome.exe” | “ C: Program Files(X86) Google Chrome Chrome Application Chrome.exe” |
--chrome.switches | |
- 可見的背景網絡 | - 可見的背景網絡 |
- 可見客戶側捕撈檢索 | - 可見客戶側捕撈檢索 |
- 違約默認應用 | - 違約默認應用 |
--disable-extensions | |
-disable-extensions-except =“ c: users username appdata local temp scoped_dir9548_2256 internal” | |
- 懸面檢測器 | - 懸面檢測器 |
- 可拆開的障礙 | - 可拆開的障礙 |
- 可替代固定桿 | - 在報告中易於宣傳 |
- 可見的同步 | - 可見的同步 |
- 可見的 - 網絡資源 | - 可見的 - 網絡資源 |
- 可觀的goging | - 可觀的goging |
-force-fieldtrials = SiteisoLationExtensions/Control | -force-fieldtrials = SiteisoLationExtensions/Control |
- 尊貴的錯誤 | - 尊貴的錯誤 |
-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 | |
- 示例 - debugging-port = 12705 | - 示例 - debugging-port = 12555 |
- 測試類型= WebDriver | - 測試類型= WebDriver |
- 使用莫克鏈 | - 使用莫克鏈 |
-user-data-dir =“ c: users username appdata local temp scoped_dir9548_25002” | -user-data-dir =“ c: users username appdata local temp scoped_dir8660_21653” |
數據:, | 數據:, |
在這裡,我在TC1命令和TC2命令之間取得了差異。
我指的是鉻命令行開關的博客列表以找到交換機的含義...您需要等待10秒鐘以進行響應
開關,有差異 | 筆記 |
---|---|
--chrome.switches | 這未在上面的博客頁面中列出。 Chrome可能會忽略此開關。可能是卡塔隆工作室的錯誤。 |
--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上找到了一個描述。我做了另外一個測試用例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。我無法刪除它。因此,我將使用技巧TC2_openOrdinaryChrome
在Katalon Studio上使用Chrome進行測試。