هذا هو مشروع استوديو Katalon بسيط لغرض العرض التوضيحي. يمكنك التحقق من ذلك على جهاز الكمبيوتر الخاص بك وتنفيذه معك Katalon Studio.
يقدم هذا المشروع عملية عمل للمشكلة التي أثارتها في مناقشة في منتدى Katalon "تحطمت Google Chrome على جهاز الكمبيوتر الخاص بي--سببين موجودين"
بمجرد استنساخ المشروع على جهاز الكمبيوتر الخاص بك ، تريد فتح المشروع في استوديو Katalon.
تم تطوير هذا المشروع مع Katalon Studio Ver5.4.1.
في البداية ، تحقق من ملف تعريف التنفيذ. في ملف التعريف الافتراضي ، ستجد متغيرين عالميين: KATALONSTUDIO_HOME
، DRIVERLOG_OUTPUT_DIRECTORY
. يرجى تغيير القيمة لتناسب بيئتك.
حدد واحدة من حالات الاختبار وقم بتشغيلها.
اختبار اسم الحالة | ماذا تفعل | النتيجة المتوقعة |
---|---|---|
TC1_defaultWayOfOpeningBrowser | استدعاء WebUI.openBrowser() كالمعتاد | سوف تنجح |
TC2_openOrdinaryChrome | يقوم بتثبيت chromedriver بدون خيارات إضافية ، ودع Katalon Studio يستخدمه | سوف تنجح |
TC3_openChromeWithSwitches | يقوم بتثبيت chromedriver مع خيار إضافي ، ودع Katalon Studio يستخدمه. | سوف تفشل |
كما تصف "Google Chrome على جهاز الكمبيوتر الخاص بي---سببين موجودين" ، يفشل استوديو Katalon على جهاز الكمبيوتر الخاص بي دائمًا في فتح متصفح Google Chrome. السبب الذي اكتشفته كان على النحو التالي.
--disable-extensions
. يثبت ذلك من خلال النظر إلى ملف chromedriver.log.هذا التناقض يجلب Google Chrome Crazy ؛ تحطم.
ما هو "التمديد المثبت على القوة"؟ --- يرجى الرجوع إلى https://getadmx.com/؟category=Chrome&policy=google.policies.chrome
من خلال النظر إلى ملف السجل الخاص بـ chromedriver.exe ، وجدت أن استوديو Katalon يخبر Chromedriver بإنشاء أمر لبدء chrome.exe مع --disable-extensions
. هذا المفتاح يسبب مشكلة في قواعد القوة. لذلك أريد أن أبدأ الكروم بطريقة أو بأخرى بدون مفتاح --disable-extension
.
بعد العديد من عمليات البحث في منتدى كاتالون ، حصلت على فكرة:
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 على جهاز الكمبيوتر الخاص بي مع تثبيت ForceInstallEdextions ، وتنفيذ الاختبارات مع 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_OpenordinarinaryChrome ، وجدت أن الأمر التالي يتم إنشاؤه بواسطة 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-extensions | |
--disable-extensions-except = "c: user username appdata local temp scoped_dir9548_2256 internal" | |
-قابلية للمراقبة | -قابلية للمراقبة |
-قابلية التغلب على حظر | -قابلية التغلب على حظر |
-قابلية للاحتفال بالتراجع | -قابلية للتقرير على التقارير |
-قابلية للمزامنة | -قابلية للمزامنة |
-موارد الشبكية | -موارد الشبكية |
-تمكين الغطس | -تمكين الغطس |
-فورس ميدانات = siteisOlationExtensions/control | -فورس ميدانات = siteisOlationExtensions/control |
-ignore-certificate-errors | -ignore-certificate-errors |
-المستوى السطحي = 0 | -المستوى السطحي = 0 |
-ميترات-تسجيل-فقط | -ميترات-تسجيل-فقط |
-لا تديرها | -لا تديرها |
-متاجر الكلمات = BASIC | -متاجر الكلمات = 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: user username appdata local temp scoped_dir9548_25002" | -user-data-dir = "c: user username appdata local temp scoped_dir8660_21653" |
بيانات:، | بيانات:، |
لقد التقطت هنا تباينات بين أمر TC1 وأمر TC2.
أشرت إلى قائمة مدونة مفاتيح سطر أوامر Chromium للعثور على معنى المفاتيح ... تحتاج إلى انتظار أكثر من 10 ثوان للرد
التبديل ، الذي له فرق | ملحوظة |
---|---|
--chrome.switches | هذا غير مدرج في صفحة المدونة أعلاه. من المحتمل أن يتم تجاهل هذا المفتاح بواسطة Chrome ؛ قد يكون خطأ في استوديو Katalon. |
--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 فشل في التواصل مع Chrome. استوديو كاتالون ينبعث من الرسالة التالية:
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 على جهاز الكمبيوتر الخاص بشركتي على مكافآت ForceInstallEdextension. لا أستطيع إزالته. لذلك أود أن أطبق خدعة TC2_openOrdinaryChrome
لتشغيل اختباراتي على استوديو Katalon مع Chrome.