Este é um projeto simples do Katalon Studio para fins de demonstração. Você pode verificar no seu PC e executá -lo com você Katalon Studio.
Este projeto apresenta um trabalho de trabalho para o problema que levantei em uma discussão no Fórum Katalon "O Google Chrome caiu no meu PC ---- 2 razões encontradas"
Uma vez clonado o projeto no seu PC, você deseja abrir o projeto no Katalon Studio.
Este projeto é desenvolvido com o Katalon Studio Ver5.4.1.
No início, verifique o perfil de execução. No perfil padrão, você encontrará 2 variáveis globais: KATALONSTUDIO_HOME
, DRIVERLOG_OUTPUT_DIRECTORY
. Altere o valor para se ajustar ao seu ambiente.
Selecione um dos casos de teste e execute -o.
Nome do caso do teste | O que faz | resultado esperado |
---|---|---|
TC1_defaultWayOfOpeningBrowser | chama WebUI.openBrowser() como sempre | terá sucesso |
TC2_openOrdinaryChrome | instancia o cromedriver sem opções adicionais e deixe o Katalon Studio usá -lo | terá sucesso |
TC3_openChromeWithSwitches | Instancia o Chromedriver com uma opção adicional e deixe o Katalon Studio usá -lo. | falhará |
Como "o Google Chrome caiu no meu PC ---- 2 razões encontradas" descreve, o Katalon Studio no meu PC sempre falha em abrir o navegador do Google Chrome. A razão pela qual descobri foi a seguinte.
--disable-extensions
Switch. Isso é comprovado analisando o arquivo Chromedriver.log.Essa contradição deixa o Google Chrome louco; ele trava.
O que é 'Extensão Instalada à Força'? --- Consulte https://getadmx.com/?category=chrome&policy=google.policies.chrome::extensionInstallForcelectionist
Observando o arquivo de log do Chromedriver.exe, descobri que o Katalon Studio está dizendo ao Chromedriver para gerar um comando para iniciar o Chrome.exe com --disable-extensions
Switch. Esse interruptor causa problemas com forceInstalleDextensions. Portanto, quero iniciar o Chrome de alguma forma sem o interruptor --disable-extension
.
Depois de muitas pesquisas no fórum de Katalon, tive uma ideia:
org.selenium.org.openqa.selenium.chrome.ChromeDriver
. Aqui não vou especificar --disable-extensions
.com.kms.katalon.core.webui.driver.DriverFactory#changeWebDriver()
. Veja o seguinte trecho de 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()
Aprendi sobre o DriverFactory#ChangeWebdriver () na discussão em https://forum.katalon.com/discussion/comment/15164#comment_15164
Como mostra TC2_openOrdinaryChrome
, consegui abrir o navegador Chrome no meu PC com o ForceInstalleDextensions instalado e executar testes com o Chrome. Estou feliz com isso.
Agora, posso explicar aos meus colegas no trabalho: "Você pode executar testes do Katalon Studio com o Google Chrome em nosso PC bem administrado, embora seja necessário um pouco de truques".
Quando executo o TC1_DefaultwayoFoPeningBrowser, descobri que o seguinte comando é gerado pelo Chromedriver.exe. Observe que-o interruptor --disable-extention
está definido.
"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:, |
Quando executo TC2_OPENORDINÁRIO, descobri que o seguinte comando é gerado pelo Chromedriver.exe. Observe que não é exibido o interruptor --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:,
Aqui eu comparo esses dois comandos. Eles são semelhantes, mas não idênticos.
Comando tc1 | Comando tc2 |
---|---|
"C: Arquivos de Programas (x86) Google Chrome Application Chrome.exe" | "C: Arquivos de Programas (x86) Google Chrome Application Chrome.exe" |
--chrome.switches | |
--discreto-background-networking | --discreto-background-networking |
-Detecção de phishing-phishing-de-liquidação | -Detecção de phishing-phishing-de-liquidação |
--Disable-Default-Apps | --Disable-Default-Apps |
--disable-extensions | |
--Disable-Extensões-Except = "C: Usuários Nome de Usern AppData Local Temp Scoped_dir9548_2256 Internal" | |
-Monitor-hang-discreto | -Monitor-hang-discreto |
-Blocking-discreto-pop | -Blocking-discreto-pop |
--Disable-PROMPT-ON-MEL. | --Disable-PROMPT-ON-REPORT |
--Disable-sync | --Disable-sync |
-Resolver-se-devados | -Resolver-se-devados |
--Nable-Logging | --Nable-Logging |
-Force-FieldTrials = SiteLisolationExtensions/Control | -Force-FieldTrials = SiteLisolationExtensions/Control |
--IGNORE Certificado-erros | --IGNORE Certificado-erros |
-Log-Level = 0 | -Log-Level = 0 |
-Metrics-Recording only | -Metrics-Recording only |
-Não primeiro punção | -Não primeiro punção |
-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 Nome de usuário AppData Local Temp Scoped_dir9548_25002" | --User-Data-Dir = "C: Usuários Nome de usuário AppData Local Temp Scoped_dir8660_21653" |
dados:, | dados:, |
Aqui, peguei discrepâncias entre o comando tc1 e o comando tc2.
Referi -me a uma lista de blogs de switches de linha de comando do cromo para encontrar o significado dos interruptores ... você precisa esperar mais de 10 segundos para a resposta
Switch, que tem diferença | observação |
---|---|
--chrome.switches | Isso não está listado na página do blog acima. É provável que esse interruptor seja apenas ignorado pelo Chrome; Pode ser um erro do Katalon Studio. |
--disable-extensions | Desativar extensões. |
--disable-extensions-except=... | Desativar extensões, exceto as especificadas em uma lista separada por vírgula. |
--proxy-server=...;http=172.24.2.10:8080;... | Usa um servidor proxy especificado, substitui as configurações do sistema. Esse comutador afeta apenas as solicitações HTTP e HTTPS. |
--remote-debugging-port=12705 | *Ativa a depuração remota sobre o HTTP na porta especificada. |
--user-data-dir=... | Diretório em que o navegador armazena o perfil do usuário. |
Quanto ao switch --proxyserver=xxxx
, pensei que não é significativo. Porque meu navegador Chrome já está configurado com informações proxy. Não precisa ser instruído pelo Katalon Studio de Informações de Proxy.
Quanto --remote-debugging-port=12705
, encontrei uma descrição em https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.html. Fiz mais um caso de teste TC3_openChromeWithSwitches
e o corri para ver o que acontece. O resultado foi interessante. O TC3 conseguiu abrir o navegador Chrome, mas o Katalon Studio não conseguiu se comunicar com o Chrome. O Katalon Studio emitiu a seguinte mensagem:
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
Repeti a execução de TC1 e TC2 e descobri que o número da porta parece ser escolhido dinamicamente: 12705, 12033, 12452, 12504, 12067, 12986, ...
OK, eu não devo especificar explicitamente --remote-debugging-port=xxxxx
. Eu deveria sair como padrão.
O navegador Chrome no meu PC corporativo possui um ForceInstalleDextensions instalado. Não posso removê -lo. Então, eu aplicaria o truque TC2_openOrdinaryChrome
para executar meus testes no Katalon Studio com o Chrome.