selenium: [🐛 Bug]: Using WebDriverListener with Augmenter throws ArgumentException
What happened?
Getting error in case of RemoteWebDriver using WebDriverListener.
How can we reproduce the issue?
Project: Maven
Runner: TestNG
src/main/java folder:
public class Driver {
public static void initDriver() {
assertionMode = AssertionMode.SOFT;
baseUrl = "https://www.google.com/";
pageLoadStrategy = "eager";
browser = "Chrome";
pollingInterval = 500;
holdBrowserOpen = false;
savePageSource = false;
fastSetValue = true;
screenshots = false;
remote = "remoteMachineUrl";
driverManagerEnabled = true;
headless = false;
timeout = 10000;
WebDriverRunner.addListener(new WebDriverEvent());
open();
}
public final class Util {
public static WebDriver driver = new Augmenter().augment(getWebDriver());
public static DevTools devTools = ((HasDevTools) driver).getDevTools();
}
public class WebDriverEvent implements WebDriverListener {
@Override
public void beforeClick(WebElement element) {
WebDriverListener.super.beforeClick(element);
System.out.println("Before Click");
}
}
src/test/java folder:
public class DevToolsTest {
@Test
public void devToolTest(){
Driver.initDriver();
open(baseUrl);
Util.devTools.createSession();
Util.devTools.send(Network.clearBrowserCache());
}
}
pom XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>Draft</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<version>6.1.2</version>
</dependency>
<dependency>
<groupId>org.selenide</groupId>
<artifactId>selenide-testng</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.12.6</version>
</dependency>
</dependencies>
</project>
The problem is connected with the WebDriverListener interface, when I remove this everything is okay.
But the problem is only arising in the case of running the test on the remote machine, when I run the test with the WebDriverListener interface in the local machine, everything is okay.
Relevant log output
java.lang.ExceptionInInitializerError
at DevToolsTest.devToolTest(DevToolsTest.java:13)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.testng.TestRunner.privateRun(TestRunner.java:794)
at org.testng.TestRunner.run(TestRunner.java:596)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:377)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:371)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:332)
at org.testng.SuiteRunner.run(SuiteRunner.java:276)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1212)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1134)
at org.testng.TestNG.runSuites(TestNG.java:1063)
at org.testng.TestNG.run(TestNG.java:1031)
at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109)
Caused by: java.lang.IllegalArgumentException: Cannot subclass primitive, array or final types: class jdk.proxy2.$Proxy10
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:490)
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:463)
at net.bytebuddy.ByteBuddy.subclass(ByteBuddy.java:360)
at org.openqa.selenium.remote.Augmenter.augment(Augmenter.java:179)
at Util.<clinit>(Util.java:10)
Operating System
Local: macOS Monterey / Remote: Windows 10
Selenium version
JavaSE 14: version 16.0.1
What are the browser(s) and version(s) where you see this issue?
Chrome 96
What are the browser driver(s) and version(s) where you see this issue?
ChromeDriver 96.0.4664.45
Are you using Selenium Grid?
Selenium Grid (selenium server 4.1.0)
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 20 (7 by maintainers)
Thank you for checking with the latest version and confirming that!
It finally worked, thanks for your support.
This fix is included in 4.1.2, are you using that version?