Это простой студийный проект Katalon для демонстрационной цели. Вы можете проверить его на своем компьютере и выполнить его с помощью Katalon Studio.
Этот проект представляет собой работу по поводу проблемы, которую я поднял в дискуссии на форуме Каталона «Google Chrome разбился на моем компьютере-2 найденные причины»
После клонирования проекта на вашем компьютере вы хотите открыть проект в студии Katalon.
Этот проект разработан с Katalon Studio Ver5.4.1.
Сначала проверьте профиль выполнения. В профиле по умолчанию вы найдете 2 глобальных переменных: KATALONSTUDIO_HOME
, DRIVERLOG_OUTPUT_DIRECTORY
. Пожалуйста, измените ценность, чтобы соответствовать вашей среде.
Выберите один из тестовых случаев и запустите его.
Тестовое имя корпуса | Что он делает | Ожидаемый результат |
---|---|---|
TC1_defaultWayOfOpeningBrowser | вызовы WebUI.openBrowser() как обычно | удастся |
TC2_openOrdinaryChrome | экземпляры Chromedriver без дополнительных опций и позвольте Katalon Studio использовать его | удастся |
TC3_openChromeWithSwitches | Устанавливает хромедривер с дополнительным вариантом и позвольте Katalon Studio использовать его. | потерпит неудачу |
Как описывает «Google Chrome на моем компьютере» ---- 2, найденные », Katalon Studio на моем компьютере всегда не может открывать браузер Google Chrome. Причина, по которой я узнал, была следующая.
--disable-extensions
. Это подтверждается, глядя на файл chromedriver.log.Это противоречие сводит с ума Google Chrome; это рухнет.
Что такое «силовая установка»? --- Пожалуйста, обратитесь к https://getadmx.com/?category=chrome&policy=google.policies.chrome:: extensionInstallForcelist
Посмотрев на файл журнала Chromedriver.exe, я обнаружил, что студия Katalon говорит Chromedriver генерировать команду для запуска Chrome.exe с переключателем --disable-extensions
. Этот переключатель вызывает проблему с ForsInstalledextensions. Поэтому я хочу каким-то образом запустить хром без --disable-extension
.
После многих поисков на форуме Каталона у меня появилась идея:
org.selenium.org.openqa.selenium.chrome.ChromeDriver
. Здесь я не буду указывать --disable-extensions
Switch.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()
Я узнал о DriverFactory#changeWebDriver () в обсуждении по адресу https://forum.katalon.com/discussion/comment/15164#comment_15164
Как показывает TC2_openOrdinaryChrome
, мне удалось открыть Chrome Browser на моем компьютере с установленными Forceinstalledextensions и выполнить тесты с Chrome. Я рад этому.
Теперь я могу объяснить своим коллегам на работе: «Вы можете запустить Catalon Studio Tests с Google Chrome на нашем хорошо зарегистрированном ПК, хотя требуются некоторые уловки».
Когда я выполняю 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 BACKGRONDEN-NETWORKING | -DISABLE-BACKGRONDEN-NETWORKING |
-Дис-дискретизация на стороне фишинга | -Дис-дискретизация на стороне фишинга |
-disable-default-Apps | -disable-default-Apps |
--disable-extensions | |
-disable-extensions-except = "c: users username appdata local temp scoped_dir9548_2256 Internal" | |
-Disable-Hang-Monitor | -Disable-Hang-Monitor |
-disable-popup blocking | -disable-popup blocking |
-Дис-промежуточный репост | -Disable-Prompt-on-отчет |
-Disable-Sync | -Disable-Sync |
-Disable-Web-Resources | -Disable-Web-Resources |
-Набл-логинг | -Набл-логинг |
-Force-Fieldtrials = SiteIsolationExtensions/Control | -Force-Fieldtrials = SiteIsolationExtensions/Control |
-Сигоре-сертификационные ошибки | -Сигоре-сертификационные ошибки |
-log-level = 0 | -log-level = 0 |
-только рекордные | -только рекордные |
-нет первого бега | -нет первого бега |
-Password Store = Basic | -Password Store = Basic |
-Порокс-сервер = ftp = 172.24.2.10: 8080; http = 172.24.2.10: 8080; HTTPS = 172.24.2.10: 8080 | |
-Ремоте-депутация-порт = 12705 | -Ремоте-дебуггинг-порт = 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" |
данные:, | данные:, |
Здесь я подобрал расхождения между командой TC1 и командой TC2.
Я сослался на список коммутаторов командной строки Chromium, чтобы найти значение переключателей ... вам нужно ждать более 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
Switch, я нашел описание по адресу 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
. Я должен оставить по умолчанию.
В Chrome Browser на моем корпоративном ПК установлена установленная Fistinstalledextensions. Я не могу удалить его. Поэтому я бы применил Trick TC2_openOrdinaryChrome
, чтобы запустить мои тесты на студии Katalon с Chrome.