java - 使用java查找selenium对象标签

标签 java google-chrome selenium

我以前的代码没有问题,并且能够使用 selenium 在网页中找到一个对象标签,没有任何问题。我正在使用 chrome 驱动程序访问页面,因为我注意到当我使用 IE 时 DOM 内部没有显示任何内容,我需要访问对象标签的内容。也就是说,我使用的代码如下:

browser.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
WebElement object = browser.findElement(By.tagName("object"));
browser.switchTo().frame(object);

目前,我遇到了一个问题,虽然我从第二行收到错误消息:

Caused by: java.lang.ClassCastException: com.google.common.collect.Maps$TransformedEntriesMap cannot be cast to org.openqa.selenium.WebElement

我正在查看的对象标签(主要是由于删除了与业务相关的部分)如下:

<object type="image/svg+xml" data="classified" width="1600px" height="900px">...</object>

知道什么可能是错误的,或者是否有更好的方法在 java 中执行此操作?

最佳答案

Chromium 项目报告的问题:

我们在内部自动化项目中遇到过这样的问题,但我们也可以选择查询 div 而不是 object (我们修复它的方式)。

我将测试改回查询 object 元素,我得到了同样的异常:

Starting ChromeDriver 2.18.343837 (52eb4041461e46a6b73308ebb19e85787ced4281) on port 18276
Only local connections are allowed.
Exception in thread "main" org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {}
Build info: version: '2.47.1', revision: 'unknown', time: '2015-07-30 11:02:44'
System info: host: 'xxx-MacBook-Pro-4.local', ip: 'xxx.xxx.x.xx', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11', java.version: '1.7.0_71'
Driver info: driver.version: RemoteWebDriver
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:355)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementByTagName(RemoteWebDriver.java:413)
    at org.openqa.selenium.By$ByTagName.findElement(By.java:331)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:340)
    at Main.main(Main.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
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:353)
    ... 9 more

浏览器:Google Chrome 版本 47.0.2526.106(64 位)
(今天 [OS X 平台] 的最新稳定版本)

关于java - 使用java查找selenium对象标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317242/

相关文章:

java - 将当前游戏中的得分添加到 Android 中的长期统计数据中

jquery - 使用 jQuery 时如何确定内存使用率高的原因?

performance - 为什么SVG滚动性能比PNG差很多?

Selenium 和LINK_TEXT

java - 如何使用具有 480 位 key 长度的 Diffie-Hellman 获取 SSL 页面?

java - Spring 自动创建属性文件

java - 向 java 程序发送复杂的参数

python - 如何打开/解压Google Chrome的resources.pak文件

java - Selenium - 滚动到嵌套滚动条内的 View 元素

c# - 将 Selenium 用于 Java 与 .NET 应用程序的优点/缺点是什么?