【问题标题】:Selenium 4.X : EventFiringDecorator throws error when using JavascriptExecutor to click webelementSelenium 4.X:使用 JavascriptExecutor 单击 webelement 时,EventFiringDecorator 抛出错误
【发布时间】:2021-08-06 20:37:00
【问题描述】:
public class DummyClass {

    WebDriver driver;
    @Test(priority = 1)
    public void testNewFeature() {
        WebDriverManager.chromedriver().setup();
        System.setProperty("webdriver.chrome.silentOutput", "true");
        WebDriverListener customListener = new DriverEventListener();
        driver = new EventFiringDecorator(customListener).decorate(new ChromeDriver());
        driver.get("http://www.google.com");
        WebElement button = driver.findElement(By.xpath(".//a[text()='Sign in']"));
        JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("arguments[0].click();", button);

    }
}

public class DriverEventListener implements WebDriverListener {

    public void beforeExecuteScript(WebDriver driver, String script, Object[] args) {
        System.out.println("beforeExecuteScript ");
    }

    public void afterExecuteScript(WebDriver driver, String script, Object[] args, Object result) {
        System.out.println("afterExecuteScript ");
    }
    }

抛出错误

java.lang.IllegalArgumentException:参数属于非法类型: com.sun.proxy.$Proxy15 在 org.openqa.selenium.remote.internal.WebElementToJsonConverter.apply(WebElementToJsonConverter.java:85) 在 java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) 在 java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) 在 java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) 在 java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 在 java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) 在 org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:550) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 方法)在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:564) 在 org.openqa.selenium.support.decorators.WebDriverDecorator.call(WebDriverDecorator.java:228) 在 org.openqa.selenium.support.decorators.DefaultDecorated.call(DefaultDecorated.java:48) 在 org.openqa.selenium.support.decorators.WebDriverDecorator.lambda$createProxy$0(WebDriverDecorator.java:287) 在 com.sun.proxy.$Proxy14.executeScript(Unknown Source)

【问题讨论】:

  • 仍在 alpha 测试中。Selenium 最新的稳定版本是3.141.59 V3。如果您认为这可能是一个问题,请随时在这里提出票https://github.com/SeleniumHQ/selenium/issues
  • 是的,谢谢,我还找到了 EventFiringWebDriver 的先前构建替代方案

标签: selenium selenium-webdriver webdriver


【解决方案1】:

我遇到了同样的问题,据说下个版本会修复。票 - https://github.com/SeleniumHQ/selenium/issues/9483

我在 selenium 4.0.0-beta-3 中遇到了这个问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2021-12-22
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多