当前位置: 首页 > 知识库问答 >
问题:

Selenium 4.X:EventFiringDecorator在使用JavascriptExecutor单击webelement时引发错误

温亮
2023-03-14
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.ForEachRestaining(Spliterators.java:948)位于java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)位于java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequentialjava.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)java.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:550)java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0java.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.Proxy14.executeScript(来源不明)

共有1个答案

仲学真
2023-03-14

我有同样的问题,据说它将与下一个版本修复。门票-https://github.com/SeleniumHQ/selenium/issues/9483

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

 类似资料:
  • 问题内容: 我正在尝试使用Java中的Selenium在新选项卡中打开链接,然后在Firefox浏览器中切换到该选项卡。据我了解,为此,我需要使用发送键组合。 为了在同一窗口中打开链接,我一直在使用这样的东西: 以上对我来说很好。 现在,我也尝试发送sendKeys,如下所示,它不起作用: 有什么建议吗?我无法弄清楚将sendKeys传递给JavascriptExecutor的正确语法。我已经看到

  • 我正在学习Selenium WebDriver。我正在一个网页上工作,我必须点击一个按钮。我编写了下面的java代码来实现这一点,但它既没有显示任何异常,也没有单击WebElement。 代码:

  • 我有一个奇怪的错误,我正在尝试写数据到hive,它在spark-shell中运行良好,但是当我使用spark-submit时,它抛出的数据库/表在默认错误中找不到。 下面是我试图在spark-submit中编写的代码,我使用的是Spark2.0.0的自定义构建 16/05/20 09:05:18 INFO sparksqlParser:解析命令:spark_schema.measures_2016

  • 因此,我正在尝试访问一个搜索页面,其中涉及单击页面底部的可点击链接。我的代码似乎能够找到链接,或者至少在尝试时不会抛出错误,但是我得到了错误“属性错误:'WebElement'对象没有属性'Click'”,即使该元素在页面上是物理可点击的。这是代码和网站。 如果我错误地认为这个元素是可点击的,请让我知道。为了清楚起见,我试图点击链接“搜索网页底部的COSEWIC状态报告”https://www.c

  • 我在https://www.yatra.com/etw-desktop/.学习自动化硒测试。当我尝试单击名为“亚洲”的图像按钮(图片已附)时,我收到一个超时异常。请帮我弄清楚出了什么问题。 显示要单击的Web元素的图像