gpt4 book ai didi

java - WebDriver异常: Returned value cannot be converted to WebElement: {} while using WebDriver with Safari 11 on Mac OS X

转载 作者:行者123 更新时间:2023-12-01 19:52:09 33 4
gpt4 key购买 nike

我有一个 selenium webdriver 脚本,它对我的​​被测应用程序执行一些回归测试。该脚本在 Google Chrome、Firefox、IE 等上完美运行。

但是,最近我尝试在 Mac OS X (10.13.5) 上的 Safari (11.1.1) 上运行它,即使我调用诸如

这样的简单行,我的脚本也会失败并显示奇怪的消息
driver.findElement(By.tagName("body"));

我得到的异常如下:

org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {}
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
System info: host: 'Yethis-MacBook-Pro.local', ip: '192.168.2.197', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.5', java.version: '1.8.0_171'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:375)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByTagName(RemoteWebDriver.java:441)
at org.openqa.selenium.By$ByTagName.findElement(By.java:334)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:360)
at org.ycs.selenium.safari.App.execute(App.java:75)
at org.ycs.selenium.safari.App.main(App.java:27)
Caused by: java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to org.openqa.selenium.WebElement
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:373)
... 5 more

Selenium 版本:3.0.1Safari 版本:11.1.1Java版本:1.8OS X 版本:10.13.5

编辑:这是我在maven中配置的依赖项

<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.0.1</version>
</dependency>

我尝试对此问题进行大量搜索,但不幸的是,没有显示任何 Mac 特定信息。

谁能帮我解决这个问题吗?

谢谢,斯里拉姆·斯里达兰

最佳答案

此错误消息...

org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {}

...暗示在JVM尝试将返回值转换为WebElement时引发了WebDriverException。

但是您的主要问题如下:

java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to org.openqa.selenium.WebElement
<小时/>

ClassCastException

ClassCastException抛出该异常表示代码尝试将对象转换为它不是实例的子类。作为示例,以下代码生成 ClassCastException:

Object x = new Integer(0);
System.out.println((String)x);
<小时/>

出了什么问题

不清楚您的用例为什么需要获取 <body>标签。但根据以下讨论:

此错误可能有以下三种可能性:

  • 您的脚本/程序正在尝试访问 <body>页面仍在加载时,或者某些 JavaScript/Ajax 仍然处于 Activity 状态时。
  • 解决方案:为您希望与之交互的 WebElement 引入 WebDriverWait,如下所示:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.id("elementID")));
  • 如果您想获取页面源,请使用 getPageSource() 方法如下:

    System.out.println(driver.getPageSource());
  • 如果程序的控制范围在<iframe>内在尝试找到 <body> 之前标签,切换回 defaultContent,如下所示:

    driver.switchTo().defaultContent();

注意:根据最佳实践,始终保持您的测试环境更新为最新版本。

  • Selenium Client依赖项更新为3.12.0:

    • selenium-java :

      <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>3.12.0</version>
      </dependency>
    • selenium-server :

      <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-server</artifactId>
      <version>3.12.0</version>
      </dependency>

关于java - WebDriver异常: Returned value cannot be converted to WebElement: {} while using WebDriver with Safari 11 on Mac OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51020225/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com