Dies ist ein einfaches Katalon Studio -Projekt zum Demonstrationszweck. Sie können es auf Ihrem PC überprüfen und mit Ihnen Katalon Studio ausführen.
Dieses Projekt präsentiert das Problem, das ich in einer Diskussion im Katalon-Forum angesprochen habe. "Google Chrome hat auf meinem PC abgestürzt ---- 2 Gründe gefunden".
Sobald Sie das Projekt auf Ihrem PC geklont haben, möchten Sie das Projekt in Katalon Studio eröffnen.
Dieses Projekt wird mit Katalon Studio Ver5.4.1 entwickelt.
Überprüfen Sie zunächst das Ausführungsprofil. Im Standardprofil finden Sie 2 globale Variablen: KATALONSTUDIO_HOME
, DRIVERLOG_OUTPUT_DIRECTORY
. Bitte ändern Sie den Wert in Ihre Umgebung.
Wählen Sie einen von Testfällen aus und führen Sie ihn aus.
Testfallname | Was es tut | erwartete Ergebnisse |
---|---|---|
TC1_defaultWayOfOpeningBrowser | Ruft WebUI.openBrowser() wie gewohnt auf | wird erfolgreich sein |
TC2_openOrdinaryChrome | Instanziates Chromedriver ohne zusätzliche Optionen und lassen Sie sich Katalon Studio verwenden | wird erfolgreich sein |
TC3_openChromeWithSwitches | Instanzipiates Chromedriver mit einer zusätzlichen Option und lassen Sie es Katalon Studio verwenden. | wird scheitern |
Da "Google Chrome auf meinem PC abgestürzt ist-2 Gründe" beschrieben ", kann Katalon Studio auf meinem PC immer den Google Chrome-Browser öffnen. Der Grund, warum ich herausfand, war wie folgt.
--disable-extensions
starten. Dies wird durch die Betrachtung der Datei chromedriver.log beweist.Dieser Widerspruch bringt das Google Chrome Crazy; Es stürzt ab.
Was ist "Kraftinstallierte Auslastung"? --- Bitte lesen
Indem ich die Protokolldatei von chromedriver.exe betrachte, stellte ich fest, dass das Katalon Studio Chromedriver aufweist, einen Befehl zu generieren, um Chrome.exe mit dem Schalter --disable-extensions
zu starten. Dieser Switch verursacht ein Problem mit ForceInstalledExtensionen. Deshalb möchte ich das Chrom irgendwie ohne Schalter --disable-extension
starten.
Nach vielen Suchanfragen im Katalon -Forum bekam ich eine Idee:
org.selenium.org.openqa.selenium.chrome.ChromeDriver
instanziieren. Hier werde ich nicht angeben --disable-extensions
Switch.com.kms.katalon.core.webui.driver.DriverFactory#changeWebDriver()
-Methode anrufen. Siehe den folgenden Ausschnitt von 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()
Ich habe in der Diskussion unter https://forum.katalon.com/discussion/comment/15164#comment_15164 etwas über triverFactory#Changewebdriver () erfahren ().
Wie TC2_openOrdinaryChrome
zeigt, habe ich es geschafft, den Chrome -Browser auf meinem PC mit installierten ForceInstalledExtensionen zu öffnen und Tests mit Chrome durchzuführen. Ich freue mich darüber.
Jetzt kann ich meinen Kollegen bei der Arbeit erklären: "Sie können Katalon Studio-Tests mit Google Chrome auf unserem gut verteilten PC durchführen, obwohl ein bisschen Tricks erforderlich sind."
Wenn ich tc1_defaultwayofopeningbrowser ausführe, stellte ich fest, dass der folgende Befehl von chromedriver.exe generiert wird. Beachten Sie, dass ein Switch --disable-extention
Switch festgelegt ist.
"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:, |
Wenn ich TC2_Openordinarychrome ausführe, fand ich, dass der folgende Befehl von chromedriver.exe generiert wird. Beachten Sie, dass NEIN --disable-extension
Switch erscheint.
"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:,
Hier vergleiche ich diese beiden Befehle. Sie sind ähnlich, aber nicht identisch.
TC1 -Befehl | TC2 -Befehl |
---|---|
"C: Programme (x86) Google Chrome application Chrome.exe" | "C: Programme (x86) Google Chrome application Chrome.exe" |
--chrome.switches | |
-Background-Networking | -Background-Networking |
-Starrbarer Klient-Phishing-Detektion | -Starrbarer Klient-Phishing-Detektion |
-Default-Apps | -Default-Apps |
--disable-extensions | |
-Disable-Extosions-Except = "C: Benutzer Benutzername AppData Local temp Scoped_dir9548_2256 Internal" | |
-Billig-Hang-Monitor | -Billig-Hang-Monitor |
-Blockierbares Blockieren | -Blockierbares Blockieren |
-Entlastbare Prompt-auf-Repost | -Entlastbare Prompt-auf-Report |
-Disable-sync | -Disable-sync |
-Entlagbare Web-Ressourcen | -Entlagbare Web-Ressourcen |
-ANBAIL-Loggen | -ANBAIL-Loggen |
-Force-Fieldtrials = SiteIsolationExtensions/Kontrolle | -Force-Fieldtrials = SiteIsolationExtensions/Kontrolle |
-IGNORE-ZERTRIFICATE-ERWEISUNGEN | -IGNORE-ZERTRIFICATE-ERWEISUNGEN |
-Log-Level = 0 | -Log-Level = 0 |
-Nur-metrics-Rekording | -Nur-metrics-Rekording |
-Ni-First-Run | -Ni-First-Run |
-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-Typ = Webdriver | -Test-Typ = Webdriver |
-Use-Mock-Keychain | -Use-Mock-Keychain |
--user-data-dir = "C: Benutzer Benutzername AppData Local temp Scoped_dir9548_25002" | --user-data-dir = "C: Benutzer Benutzername AppData Local temp Scoped_dir8660_21653" |
Daten:, | Daten:, |
Hier habe ich Diskrepanzen zwischen dem Befehl TC1 und dem Befehl TC2 aufgenommen.
Ich habe mich auf eine Blog -Liste der Chromium -Befehlszeilenschalter bezog, um die Bedeutung von Switches zu finden ... Sie müssen über 10 Sekunden auf die Antwort warten
Schalter, der Unterschied hat | Notiz |
---|---|
--chrome.switches | Dies ist nicht auf der obigen Blog -Seite aufgeführt. Es ist wahrscheinlich, dass dieser Schalter nur von Chrome ignoriert wird. Könnte ein Fehler von Katalon Studio sein. |
--disable-extensions | Erweiterungen deaktivieren. |
--disable-extensions-except=... | Deaktivieren Sie Erweiterungen mit Ausnahme derjenigen, die in einer von Kommas getrennten Liste angegeben sind. |
--proxy-server=...;http=172.24.2.10:8080;... | Verwendet einen angegebenen Proxy -Server und überschreibt die Systemeinstellungen. Dieser Schalter betrifft nur HTTP- und HTTPS -Anforderungen. |
--remote-debugging-port=12705 | *Aktiviert Remote -Debuggen über HTTP am angegebenen Port. |
--user-data-dir=... | Verzeichnis, in dem der Browser das Benutzerprofil speichert. |
Was --proxyserver=xxxx
Switch betrifft, dachte ich, dass dies nicht sinnvoll ist. Da mein Chrombrowser bereits mit Proxy -Informationen konfiguriert ist. Es muss nicht vom Katalon Studio of Proxy Info angewiesen werden.
Wie für --remote-debugging-port=12705
Switch fand ich eine Beschreibung unter https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.html. Ich habe noch einen Testfall TC3_openChromeWithSwitches
gemacht und ihn ausgeführt, um zu sehen, was passiert. Das Ergebnis war interessant. TC3 gelang es, den Chrombrowser zu öffnen, aber Katalon Studio konnte nicht mit dem Chrom kommunizieren. Katalon Studio emittierte die folgende Nachricht:
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
Ich wiederholte die Ausführung von TC1 und TC2 und stellte fest, dass die Portnummer dynamisch ausgewählt zu sein scheint: 12705, 12033, 12452, 12504, 12067, 12986, ...
Ok, ich sollte nicht explizit angeben --remote-debugging-port=xxxxx
. Ich sollte standardmäßig gehen.
Der Chrome -Browser auf meinem UnternehmenspC hat eine ForceInstalledExtensionen installiert. Ich kann es nicht entfernen. Deshalb würde ich den Trick TC2_openOrdinaryChrome
anwenden, um meine Tests in Katalon Studio mit Chrome durchzuführen.