Agree, you need to repackage it, but like I also mentioned, devtools works seemless with selenium 4, not with the current version which is supported in Katalon studio. I thought yesterday night I easily get it to work, but was not aware that it supports still selenium 3.x. I had problems recognizing the browser chrome. I got stuck on this, and highly like due to the version deviation!
function call
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import static com.kms.katalon.core.testobject.ObjectRepository.findWindowsObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testng.keyword.TestNGBuiltinKeywords as TestNGKW
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import com.kms.katalon.core.windows.keyword.WindowsBuiltinKeywords as Windows
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.Keys as Keys
import devtools.monitordevtools
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
WebUI.openBrowser('https://Auction.com') // Replace with your actual URL
def monitorTool = new monitordevtools()
// Assuming you want to start monitoring right after the page loads
monitorTool.monitorXHR()
custom keyword
package devtools
import com.kms.katalon.core.annotation.Keyword
import com.kms.katalon.core.webui.driver.DriverFactory
import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.remote.RemoteWebDriver
import org.openqa.selenium.devtools.DevTools
import org.openqa.selenium.devtools.v118.network.Network
public class monitordevtools {
@Keyword
def monitorXHR() {
WebDriver driver = DriverFactory.getWebDriver()
ChromeDriver chromeDriver = null
println("Driver class: " + driver.getClass().getName())
if (driver instanceof com.kms.katalon.core.webui.driver.SmartWaitWebDriver) {
WebDriver wrappedDriver = ((com.kms.katalon.core.webui.driver.SmartWaitWebDriver) driver).getWrappedDriver()
if (wrappedDriver instanceof ChromeDriver) {
chromeDriver = (ChromeDriver) wrappedDriver
} else if (wrappedDriver instanceof RemoteWebDriver && "chrome".equals(((RemoteWebDriver) wrappedDriver).getCapabilities().getBrowserName())) {
throw new UnsupportedOperationException("Monitoring XHR is not supported when running tests remotely with Chrome on Selenium Grid")
}
} else if (driver instanceof ChromeDriver) {
chromeDriver = (ChromeDriver) driver
} else {
throw new UnsupportedOperationException("This method supports only ChromeDriver")
}
if (chromeDriver == null) {
throw new IllegalStateException("ChromeDriver instance is null. This shouldn't happen.")
}
// Get the current URL
String currentUrl = chromeDriver.getCurrentUrl()
DevTools devTools = chromeDriver.getDevTools()
devTools.createSession()
// Enable network monitoring
devTools.send(Network.enable())
// Set up a request listener to monitor XHR based on the current URL
devTools.addListener(Network.requestWillBeSent()) { request ->
if (request.getRequest().getUrl().contains(currentUrl) && request.getRequest().getMethod().equals("GET")) { // Adjust depending on the condition you're looking for
println("Detected an XHR request for the current URL: " + request.getRequest().getUrl())
}
}
}
}
=============== ROOT CAUSE =====================
For trouble shooting, please visit: https://docs.katalon.com/katalon-studio/docs/troubleshooting.html
================================================
10-21-2023 06:28:22 AM Test Cases/testje
Elapsed time: 11.695s
Error…
Test Cases/testje FAILED.
Reason:
groovy.lang.MissingMethodException: No signature of method: com.kms.katalon.selenium.driver.CChromeDriver.getDevTools() is applicable for argument types: () values:
at devtools.monitordevtools.monitorXHR(monitordevtools.groovy:40)
at devtools.monitordevtools$monitorXHR.call(Unknown Source)
at testje.run(testje:29)
at com.kms.katalon.core.main.ScriptEngine.run(ScriptEngine.java:194)
at com.kms.katalon.core.main.ScriptEngine.runScriptAsRawText(ScriptEngine.java:119)
at