这是一个简单的Katalon Studio项目,用于演示目的。您可以将其检查到PC上并与Katalon Studio一起执行。
该项目为我在Katalon论坛上的讨论中提出的问题提供了一个工作,“ Google Chrome坠毁在我的PC上 - 2个原因”
将项目克隆到PC上后,您想在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崩溃在我的PC上 - 发现的原因”所描述的那样,我的PC上的Katalon Studio总是无法打开Google Chrome浏览器。我发现的原因如下。
--disable-extensions
Switch启动Chrome.exe。通过查看chromedriver.log文件可以证明这一点。这种矛盾使Google Chrome疯狂。它崩溃了。
什么是“力安装的扩展”? ---请参阅https://getadmx.com/?category=Chrome&policy=google.police.chrome :: extensionininstallforcelist
通过查看Chromedriver.exe的日志文件,我发现Katalon Studio告诉Chromedriver生成一个命令,以启动使用--disable-extensions
Switch启动Chrome.exe。此开关引起了力纳斯特尔延迟的问题。因此,我想以某种方式启动Chrome,而无需--disable-extension
Switch。
在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()
我在https://forum.katalon.com/discussion/comment/15164#comment_15164中了解了driverFactory#thexwebdriver()
正如TC2_openOrdinaryChrome
所表明的那样,我设法使用安装了ForceInstalledExtensions在PC上打开Chrome浏览器,并使用Chrome执行测试。我很高兴。
现在,我可以向工作中的大学解释:“您可以在我们管理好的PC上与Google Chrome一起运行Katalon Studio测试,尽管需要一些技巧”。
当我执行tc1_defaultwayoopeningbrowser时,我发现以下命令由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 Chrome Application Chrome.exe” | “ C: Program Files(X86) Google Chrome Chrome Application Chrome.exe” |
--chrome.switches | |
- 可见的背景网络 | - 可见的背景网络 |
- 可见客户侧捕捞检索 | - 可见客户侧捕捞检索 |
- 违约默认应用 | - 违约默认应用 |
--disable-extensions | |
-disable-extensions-except =“ c: users username appdata local temp scoped_dir9548_2256 internal” | |
- 悬面检测器 | - 悬面检测器 |
- 可拆开的障碍 | - 可拆开的障碍 |
- 可替代固定杆 | - 在报告中易于宣传 |
- 可见的同步 | - 可见的同步 |
- 可见的 - 网络资源 | - 可见的 - 网络资源 |
- 可观的goging | - 可观的goging |
-force-fieldtrials = SiteisoLationExtensions/Control | -force-fieldtrials = SiteisoLationExtensions/Control |
- 尊贵的错误 | - 尊贵的错误 |
-log-level = 0 | -log-level = 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 | |
- 示例 - debugging-port = 12705 | - 示例 - debugging-port = 12555 |
- 测试类型= WebDriver | - 测试类型= WebDriver |
- 使用莫克链 | - 使用莫克链 |
-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命令之间取得了差异。
我指的是铬命令行开关的博客列表以找到交换机的含义...您需要等待10秒钟以进行响应
开关,有差异 | 笔记 |
---|---|
--chrome.switches | 这未在上面的博客页面中列出。 Chrome可能会忽略此开关。可能是卡塔隆工作室的错误。 |
--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
。我应该默认离开。
我公司PC上的Chrome浏览器已安装了ForceinStalleDextensions。我无法删除它。因此,我将使用技巧TC2_openOrdinaryChrome
在Katalon Studio上使用Chrome进行测试。