이것은 데모 목적을위한 간단한 Katalon Studio 프로젝트입니다. PC에서 확인하여 Katalon Studio와 함께 실행할 수 있습니다.
이 프로젝트는 Katalon Forum의 토론에서 제기 한 문제에 대한 작업을 제시합니다.
PC에서 프로젝트를 복제하면 Katalon Studio에서 프로젝트를 열고 싶습니다.
이 프로젝트는 Katalon Studio Ver5.4.1로 개발되었습니다.
처음에는 실행 프로필을 확인하십시오. 기본 프로필에는 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 파일을 보면 입증됩니다.이 모순은 Chrome Chrome을 미치게합니다. 충돌합니다.
'강제 설치-확장'이란 무엇입니까? --- https://getadmx.com/?category=chrome&policy=google.policies.chrome::extensioninstallforcelist를 참조하십시오
Chromedriver.exe의 로그 파일을 살펴보면 Katalon Studio가 Chromedriver에게 --disable-extensions
스위치를 사용하여 Chrome.exe를 시작하도록 명령을 생성하도록 지시하고 있음을 발견했습니다. 이 스위치는 ForceInstalleDextensions의 문제를 일으 킵니다. 따라서, --disable-extension
스위치없이 어떻게 든 크롬을 시작하고 싶습니다.
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#ChangeWebdriver ()에 대해 배웠습니다
TC2_openOrdinaryChrome
보여 주듯이 ForceInstalledExtensions가 설치된 PC에서 Chrome 브라우저를 열고 Chrome으로 테스트를 실행했습니다. 나는 그것에 대해 기쁘다.
이제 직장에서 대학생들에게 설명 할 수 있습니다. "잘 관리 된 PC에서 Google Chrome으로 Katalon Studio 테스트를 실행할 수 있지만 약간의 트릭이 필요합니다."
tc1_defaultwayofopeningbrowser를 실행하면 다음 명령이 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 Application Chrome.exe" | "C : Program Files (x86) Google Chrome Application Chrome.exe" |
--chrome.switches | |
-드라이스 가능한 팩터 네트워킹 | -드라이스 가능한 팩터 네트워킹 |
-disable-client-side-phishing 감지 | -disable-client-side-phishing 감지 |
-disable-default-apps | -disable-default-apps |
--disable-extensions | |
-disable-extensions-excrect = "c : users username appdata local temp scoped_dir9548_2256 내부" | |
-방향-행 모니터 | -방향-행 모니터 |
-드라이스 가능한 팝업 블로킹 | -드라이스 가능한 팝업 블로킹 |
-disable-prompt-on repost | -disable-prompt-on-report |
-disable-sync | -disable-sync |
-disable-web-resources | -disable-web-resources |
-enable-logging | -enable-logging |
-Force-FieldTrials = siteIsolationExtensions/Control | -Force-FieldTrials = siteIsolationExtensions/Control |
-ignore-certificate-errors | -ignore-certificate-errors |
-로그 레벨 = 0 | -로그 레벨 = 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 |
-거주자-키 체인 | -거주자-키 체인 |
--user-data-dir = "c : user username appdata local temp scoped_dir9548_25002" | --user-data-dir = "c : user username appdata local temp scoped_dir8660_21653" |
데이터:, | 데이터:, |
여기서는 TC1 명령과 TC2 명령 사이의 불일치를 선택했습니다.
스위치의 의미를 찾기 위해 Chromium Command Line 스위치의 블로그 목록을 참조했습니다. 응답을 위해 10 초 이상 기다려야합니다 .
차이가있는 스위치 | 메모 |
---|---|
--chrome.switches | 위의 블로그 페이지에는 나열되지 않습니다. 이 스위치는 크롬에 의해 무시 될 가능성이 높습니다. 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
스위치는 의미가 없다고 생각했습니다. 내 크롬 브라우저는 이미 프록시 정보로 구성되어 있기 때문입니다. Katalon Studio of Proxy Info가 지시받을 필요는 없습니다.
--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
를 적용하여 Chrome과 함께 Katalon Studio에서 테스트를 실행할 것입니다.