Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java org.openqa.selenium.WebDriverException:返回值无法转换为WebElement_Java_Selenium_Selenium Webdriver - Fatal编程技术网

Java org.openqa.selenium.WebDriverException:返回值无法转换为WebElement

Java org.openqa.selenium.WebDriverException:返回值无法转换为WebElement,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我想为一个网站编写selenium测试。但我还不能让它工作 这是一个至少不起作用的例子。我创建了一个公共docker实例。你能再现错误吗?执行此代码时是否会发生相同的情况 package Selenium; import java.net.URL; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.remo

我想为一个网站编写selenium测试。但我还不能让它工作

这是一个至少不起作用的例子。我创建了一个公共docker实例。你能再现错误吗?执行此代码时是否会发生相同的情况

package Selenium;

import java.net.URL;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;

public class stackoverflow {

    @Test
    public void testSimple() throws Exception {

        DesiredCapabilities desiredCapabilities = DesiredCapabilities.firefox();
        desiredCapabilities.setBrowserName("firefox");
        desiredCapabilities.setVersion("83.0");

        RemoteWebDriver driver = new RemoteWebDriver(new URL("http://stackoverflow.martin-mandelkow.de:4444/wd/hub"), desiredCapabilities);
        driver.get("https://stackoverflow.com/questions/65555131/org-openqa-selenium-webdriverexception-returned-value-cannot-be-converted-to-we");
        By containerBy = By.id("notify-container");
        WebElement element = driver.findElement(containerBy);
        System.out.println(element.toString());
        driver.quit();
    }

}
控制台日志:

cd C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1; "JAVA_HOME=C:\\Program Files\\Java\\jdk-15.0.1" cmd /c "\"C:\\Program Files\\NetBeans-12.2\\netbeans\\java\\maven\\bin\\mvn.cmd\" -Dtest=Selenium.stackoverflow -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans-12.2\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 test-compile surefire:test"
Scanning for projects...

--------------------< com.mycompany:mavenproject1 >---------------------
Building mavenproject1 1.0-SNAPSHOT
--------------------------------[ jar ]---------------------------------

--- maven-resources-plugin:2.6:resources (default-resources) @ mavenproject1 ---
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\src\main\resources

--- maven-compiler-plugin:3.1:compile (default-compile) @ mavenproject1 ---
Nothing to compile - all classes are up to date

--- maven-resources-plugin:2.6:testResources (default-testResources) @ mavenproject1 ---
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\src\test\resources

--- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ mavenproject1 ---
Changes detected - recompiling the module!
Compiling 6 source files to C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\target\test-classes

--- maven-surefire-plugin:2.12.4:test (default-cli) @ mavenproject1 ---
Surefire report directory: C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\target\surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running Selenium.stackoverflow
element = driver.findElement
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 6.705 sec <<< FAILURE!
testSimple(Selenium.stackoverflow)  Time elapsed: 6.552 sec  <<< ERROR!
org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {element-6066-11e4-a52e-4f735466cecf=18ace72e-f260-4c78-a78b-b34a8f3cf8d4}
Build info: version: '2.45.0', revision: '5017cb8e7ca8e37638dc3091b2440b90a1d8686f', time: '2015-02-27 09:10:26'
System info: host: 'DESKTOP-NSVVQ0T', ip: '172.20.176.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '15.0.1'
Driver info: driver.version: RemoteWebDriver
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:359)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:393)
    at org.openqa.selenium.By$ById.findElement(By.java:214)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
    at Selenium.stackoverflow.testSimple(stackoverflow.java:28)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ClassCastException: class com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to class org.openqa.selenium.WebElement (com.google.common.collect.Maps$TransformedEntriesMap and org.openqa.selenium.WebElement are in unnamed module of loader 'app')
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:357)
    ... 36 more


Results :

Tests in error: 
  testSimple(Selenium.stackoverflow): Returned value cannot be converted to WebElement: {element-6066-11e4-a52e-4f735466cecf=18ace72e-f260-4c78-a78b-b34a8f3cf8d4}(..)

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time:  15.319 s
Finished at: 2021-01-06T20:28:51+01:00
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-cli) on project mavenproject1: There are test failures.

Please refer to C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\target\surefire-reports for the individual test results.
-> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
cd C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1;“JAVA\u HOME=C:\\Program Files\\JAVA\\jdk-15.0.1”cmd/C“\”C:\\Program Files\\NetBeans-12.2\\NetBeans\\JAVA\\maven\\bin\\mvn.cmd\”-Dtest=Selenium.stackoverflow-Dmaven.ext.class.path=\“C:\\Program Files\\NetBeans-12.2\\NetBeans\\JAVA\\maven nblib\\NetBeans eventspy.jar\”-Dfile.encoding=UTF-8测试编译surefire:test”
正在扫描项目。。。
-----------------------------------------
构建mavenproject1 1.0-SNAPSHOT
--------------------------------[罐子]---------------------------------
---maven资源插件:2.6:resources(默认资源)@mavenproject1---
使用“UTF-8”编码复制筛选的资源。
跳过不存在的资源目录C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\src\main\resources
---maven编译器插件:3.1:compile(默认编译)@mavenproject1---
无需编译-所有类都是最新的
---maven资源插件:2.6:testResources(默认testResources)@mavenproject1---
使用“UTF-8”编码复制筛选的资源。
跳过不存在的资源目录C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\src\test\resources
---maven编译器插件:3.1:testCompile(默认testCompile)@mavenproject1---
检测到更改-重新编译模块!
正在将6个源文件编译为C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\target\test类
---maven surefire插件:2.12.4:test(默认cli)@mavenproject1---
Surefire报告目录:C:\Users\Mandelkow\Documents\NetBeansProjects\mavenproject1\target\Surefire报告
-------------------------------------------------------
T T S T S
-------------------------------------------------------
正在运行Selenium.stackoverflow
元素=driver.findElement
测试运行:1,失败:0,错误:1,跳过:0,所用时间:6.705秒

您能否共享html页面或至少应该匹配的元素及其父元素?它何时失败?堆栈跟踪何时创建?另外,您试图实现现有ExpectedConditions没有提供的功能是什么?@DMart我从一个简单的
WebElement元素=driver.findElement(By.id(“login\u input\u user\u name”)向我提供错误
返回值无法转换为WebElement
。从那里,我复制了多个教程中粘贴的代码,希望能得到一个简单的登录函数。@rmunge我在问题中添加了整个页面的html。看起来您的元素有问题。请尝试任何其他元素,而不是用户名,如By usernameBy=By.id(“用户对话\联系\表单\ div”),并查看它是否仍在出现。您能否共享html页面或至少应匹配的元素及其父元素?何时失败?堆栈跟踪何时创建?另外,您试图实现现有ExpectedConditions没有提供的功能是什么?@DMart我从一个简单的
WebElement元素=driver.findElement(By.id(“login\u input\u user\u name”)向我提供错误
返回值无法转换为WebElement
。从那里,我复制了多个教程中粘贴的代码,希望能得到一个简单的登录函数。@rmunge我在问题中添加了整个页面的html。看起来您的元素有问题。尝试任何其他元素,而不是用户名,比如By usernameBy=By.id(“user\u dialog\u contact\u form\u div”),看看它是否仍然存在。
<?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>com.mycompany</groupId>
    <artifactId>mavenproject1</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>15</maven.compiler.source>
        <maven.compiler.target>15</maven.compiler.target>
    </properties>
    <dependencies>
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.45.0</version>
  </dependency>
  <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-remote-driver -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-remote-driver</artifactId>
    <version>2.45.0</version>
</dependency>
  <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>

</project>