นี่คือโครงการสตูดิโอ Katalon ที่เรียบง่ายเพื่อการสาธิต คุณสามารถตรวจสอบบนพีซีของคุณและดำเนินการกับคุณ Katalon Studio
โครงการนี้นำเสนอปัญหาการทำงานให้กับปัญหาที่ฉันได้กล่าวถึงในการสนทนาในฟอรัม Katalon "Google Chrome ชนกับพีซีของฉัน ---- 2 เหตุผลที่พบ"
เมื่อโคลนโครงการบนพีซีของคุณคุณต้องการเปิดโครงการใน Katalon Studio
โครงการนี้ได้รับการพัฒนาด้วย Katalon Studio Ver5.4.1
ตอนแรกตรวจสอบโปรไฟล์การดำเนินการ ในโปรไฟล์เริ่มต้นคุณจะพบตัวแปรทั่วโลก 2 ตัว: KATALONSTUDIO_HOME
, DRIVERLOG_OUTPUT_DIRECTORY
โปรดเปลี่ยนค่าให้พอดีกับสภาพแวดล้อมของคุณ
เลือกหนึ่งในกรณีทดสอบและเรียกใช้
ชื่อกรณีทดสอบ | มันทำอะไร | ผลลัพธ์ที่คาดหวัง |
---|---|---|
TC1_defaultWayOfOpeningBrowser | เรียก WebUI.openBrowser() ตามปกติ | จะประสบความสำเร็จ |
TC2_openOrdinaryChrome | อินสแตนติส Chromedriver โดยไม่มีตัวเลือกเพิ่มเติมและให้ Katalon Studio ใช้มัน | จะประสบความสำเร็จ |
TC3_openChromeWithSwitches | อินสแตนติส Chromedriver ด้วยตัวเลือกเพิ่มเติมและให้ 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
สวิตช์นี้ทำให้เกิดปัญหากับ 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()
ฉันเรียนรู้เกี่ยวกับ DriverFactory#ChangeWebDriver () ในการสนทนาที่ https://forum.katalon.com/discussion/comment/15164#comment_15164
ดังที่แสดงให้เห็นว่า TC2_openOrdinaryChrome
ฉันได้จัดการเพื่อเปิดเบราว์เซอร์ Chrome บนพีซีของฉันโดยติดตั้ง ForceInstallEdextensions และดำเนินการทดสอบกับ Chrome ฉันดีใจกับมัน
ตอนนี้ฉันสามารถอธิบายให้เพื่อนร่วมงานของฉันในที่ทำงาน: "คุณสามารถเรียกใช้การทดสอบสตูดิโอ Katalon กับ 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 | |
-เครือข่ายพื้นหลังที่ต้องใช้ | -เครือข่ายพื้นหลังที่ต้องใช้ |
-การตรวจจับการจับ | -การตรวจจับการจับ |
-แอพพลิเคชั่น-default-default | -แอพพลิเคชั่น-default-default |
--disable-extensions | |
-disable-extensions-except = "c: users username appdata local temp scoped_dir9548_2256 ภายใน" | |
-ผู้ตรวจสอบ | -ผู้ตรวจสอบ |
-การปิดกั้นแบบพร็อกอัพ | -การปิดกั้นแบบพร็อกอัพ |
-การเปิดรับ-เปิดใหม่ | -การจัดทำ |
-การซิงค์แบบ disable | -การซิงค์แบบ disable |
-แหล่งข้อมูล | -แหล่งข้อมูล |
-การบันทึก | -การบันทึก |
-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 |
-การทดสอบประเภท = webDriver | -การทดสอบประเภท = webDriver |
-การใช้งาน Mock-Keychain | -การใช้งาน 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; อาจเป็นความผิดพลาดของ 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
ฉันคิดว่ามันไม่ได้มีความหมาย เพราะเบราว์เซอร์ Chrome ของฉันได้รับการกำหนดค่าด้วยข้อมูลพร็อกซีแล้ว ไม่จำเป็นต้องได้รับคำแนะนำจาก Katalon Studio ของข้อมูลพร็อกซี
สำหรับ --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
ฉันควรปล่อยให้เป็นค่าเริ่มต้น
เบราว์เซอร์ Chrome บนพีซีองค์กรของฉันมีการติดตั้ง ForceInstalledextensions ฉันไม่สามารถลบออกได้ ดังนั้นฉันจะใช้เคล็ดลับ TC2_openOrdinaryChrome
เพื่อเรียกใช้การทดสอบของฉันใน Katalon Studio กับ Chrome