Il s'agit d'un simple projet de studio Katalon à des fins de démonstration. Vous pouvez le vérifier sur votre PC et l'exécuter avec vous Katalon Studio.
Ce projet présente une contournement du problème que j'ai soulevé dans une discussion dans le Forum de Katalon "Google Chrome s'est écrasé sur mon PC ---- 2 raisons trouvées"
Une fois cloné le projet sur votre PC, vous souhaitez ouvrir le projet dans Katalon Studio.
Ce projet est développé avec Katalon Studio Ver5.4.1.
Au début, vérifiez le profil d'exécution. Dans le profil par défaut, vous trouverez 2 variables globales: KATALONSTUDIO_HOME
, DRIVERLOG_OUTPUT_DIRECTORY
. Veuillez modifier la valeur à adapter à votre environnement.
Sélectionnez l'un des cas de test et exécutez-le.
Nom du cas de test | Ce qu'il fait | résultat attendu |
---|---|---|
TC1_defaultWayOfOpeningBrowser | appelle WebUI.openBrowser() comme d'habitude | réussira |
TC2_openOrdinaryChrome | instancie ChromEdriver sans options supplémentaires, et laissez Katalon Studio l'utiliser | réussira |
TC3_openChromeWithSwitches | Instancie ChromEdriver avec une option supplémentaire et laissez Katalon Studio l'utiliser. | échouera |
Alors que "Google Chrome s'est écrasé sur mon PC ---- 2 raisons trouvées" le décrit, Katalon Studio sur mon PC ne parvient toujours pas à ouvrir le navigateur Google Chrome. La raison pour laquelle j'ai découvert était la suivante.
--disable-extensions
. Ceci est prouvé en examinant le fichier chromedriver.log.Cette contradiction met le fou Google Chrome; il se bloque.
Qu'est-ce que la «tension d'installation de force»? --- Veuillez vous référer à https://getadmx.com/?category=chrome&policy=google.policies.chrome:::extensionInstallforcelist
En regardant le fichier journal de chromedriver.exe, j'ai trouvé que le studio Katalon dit à Chromedriver de générer une commande pour démarrer Chrome.exe avec un commutateur --disable-extensions
. Ce commutateur entraîne un problème avec ForceInstalleDextensions. Par conséquent, je veux démarrer le chrome d'une manière ou d'une autre sans l'interrupteur --disable-extension
.
Après de nombreuses recherches sur le forum Katalon, j'ai eu une idée:
org.selenium.org.openqa.selenium.chrome.ChromeDriver
. Ici, je ne spécifierai pas le commutateur --disable-extensions
.com.kms.katalon.core.webui.driver.DriverFactory#changeWebDriver()
. Voir l'extrait suivant 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()
J'ai appris DriverFactory # ChangeWebdriver () dans la discussion à https://forum.katalon.com/discussion/comment/15164#comment_15164
Comme le montre TC2_openOrdinaryChrome
, j'ai réussi à ouvrir le navigateur Chrome sur mon PC avec ForceInstalledextensions installé et exécuter des tests avec Chrome. J'en suis content.
Maintenant, je peux expliquer à mes collègues au travail: "Vous pouvez exécuter des tests de studio Katalon avec Google Chrome sur notre PC bien administré, bien qu'un peu d'astuces requises".
Lorsque j'exécute tc1_defaultwayofoveningBrowser, j'ai trouvé que la commande suivante est générée par chromedriver.exe. Notez que le commutateur --disable-extention
est défini.
"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:, |
Lorsque j'exécute TC2_OpenORDINALCHROME, j'ai trouvé que la commande suivante est générée par Chromedriver.exe. Notez que le commutateur --disable-extension
n'apparaît.
"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:,
Ici, je compare ces deux commandes. Ils sont similaires mais pas identiques.
Commande TC1 | Commande TC2 |
---|---|
"C: Program Files (x86) Google Chrome Application Chrome.exe" | "C: Program Files (x86) Google Chrome Application Chrome.exe" |
--chrome.switches | |
--Disable-Background-Networking | --Disable-Background-Networking |
- détection de phishing-phi-phi-hardin | - détection de phishing-phi-phi-hardin |
--disable-défaut-appa | --disable-défaut-appa |
--disable-extensions | |
--disable-extensions-except = "c: users username appdata local temp scoped_dir9548_2256 interne" | |
--Disable-Hang-Monitor | --Disable-Hang-Monitor |
- bloqueur-pop-popup | - bloqueur-pop-popup |
--disable-prospt-on-repost | --disable-grand-sur-report |
--disable-synchronié | --disable-synchronié |
- Disable-Web-Resources | - Disable-Web-Resources |
- enrôlant | - enrôlant |
- Force-FieldTrials = SiteisolationExtensions / Control | - Force-FieldTrials = SiteisolationExtensions / Control |
--ignore-certificate-errors | --ignore-certificate-errors |
--log-niveau = 0 | --log-niveau = 0 |
--Metrics-enregistrant uniquement | --Metrics-enregistrant uniquement |
- pas-premier | - pas-premier |
--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-Mock-Keychain | - User-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" |
données:, | données:, |
Ici, j'ai ramassé des écarts entre la commande TC1 et la commande TC2.
J'ai fait référence à une liste de blogs de commutateurs de ligne de commande Chromium pour trouver la signification des commutateurs ... vous devez attendre plus de 10 secondes pour la réponse
Switch, qui a une différence | note |
---|---|
--chrome.switches | Ceci n'est pas répertorié dans la page de blog ci-dessus. Il est probable que ce commutateur soit simplement ignoré par Chrome; Cela pourrait être une erreur de Katalon Studio. |
--disable-extensions | Désactiver les extensions. |
--disable-extensions-except=... | Désactiver les extensions à l'exception de celles spécifiées dans une liste séparée par des virgules. |
--proxy-server=...;http=172.24.2.10:8080;... | Utilise un serveur proxy spécifié, remplace les paramètres du système. Ce commutateur affecte uniquement les demandes HTTP et HTTPS. |
--remote-debugging-port=12705 | * Active le débogage à distance sur HTTP sur le port spécifié. |
--user-data-dir=... | Répertoire où le navigateur stocke le profil utilisateur. |
Quant au commutateur --proxyserver=xxxx
, je pensais que ce n'était pas significatif. Parce que mon navigateur Chrome est déjà configuré avec des informations proxy. Il n'a pas besoin d'être instruit par Katalon Studio of Proxy Info.
Quant à --remote-debugging-port=12705
Switch, j'ai trouvé une description à https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.html. J'ai fait un autre cas de test TC3_openChromeWithSwitches
et je l'ai exécuté pour voir ce qui se passe. Le résultat a été intéressant. TC3 a réussi à ouvrir le navigateur Chrome, mais Katalon Studio n'a pas réussi à communiquer avec le Chrome. Katalon Studio a émis le message suivant:
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
J'ai répété en exécutant TC1 et TC2 et j'ai constaté que le numéro de port semble être choisi dynamiquement: 12705, 12033, 12452, 12504, 12067, 12986, ...
Ok, je ne devrais pas spécifier explicitement --remote-debugging-port=xxxxx
. Je devrais partir par défaut.
Le navigateur Chrome sur mon PC d'entreprise a une forceInstalleDextensions installée. Je ne peux pas le retirer. J'appliquerais donc l'astuce TC2_openOrdinaryChrome
pour exécuter mes tests sur Katalon Studio avec Chrome.