线程 "main" org.openqa.selenium.WebDriverException 中的异常:返回值无法转换为 WebElement:{stacktrace=Backtrace:
Exception in thread "main" org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {stacktrace=Backtrace:
我在简单程序中遇到错误,之前它运行良好,现在由于某种原因我无法执行它。
我正在使用硒 3.0.1
Chrome 驱动程序 93.0.4
请检查我的代码和下面的错误。
如果有人能帮助我,我将不胜感激
我的代码:
public class MouseOverDemo {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\SeleniumJars\chromedriver.exe");
WebDriver driver = new ChromeDriver();
// JavascriptExecutor js = (JavascriptExecutor)driver;
//driver.get("http://demo.guru99.com/test/drag_drop.html");
driver.get("https://jqueryui.com/resizable/");
Actions action = new Actions(driver);
WebElement resize = driver.findElement(By.cssSelector("body.jquery-ui.page.page-id-43.page-template-default.page-slug-resizable.single-author.singular:nth-child(2) div:nth-child(2) div.clearfix.row:nth-child(3) div.content-right.twelve.columns div:nth-child(1) > iframe.demo-frame:nth-child(5)"));
driver.switchTo().frame(resize);
WebElement resize1 = driver.findElement(By.id("resizable"));
action.moveToElement(resize1, 2500, 2500).build().perform();
System.out.println("Resize is done");
}
错误:
Starting ChromeDriver 93.0.4577.63 (ff5c0da2ec0adeaed5550e6c7e98417dac77d98a-refs/branch-heads/4577@{#1135}) on port 40273
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Nov. 11, 2021 3:43:35 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {stacktrace=Backtrace:
Ordinal0 [0x003CD403+2479107]
Ordinal0 [0x00367D51+2063697]
Ordinal0 [0x00271F90+1056656]
Ordinal0 [0x00291A80+1186432]
Ordinal0 [0x002B58E7+1333479]
Ordinal0 [0x002B395A+1325402]
Ordinal0 [0x002B351D+1324317]
Ordinal0 [0x00254D3F+937279]
Ordinal0 [0x00255246+938566]
Ordinal0 [0x00255521+939297]
GetHandleVerifier [0x0054F3F6+1531734]
GetHandleVerifier [0x005FE9AE+2249998]
GetHandleVerifier [0x004539AB+501003]
GetHandleVerifier [0x00452A29+497033]
Ordinal0 [0x0036D11D+2085149]
Ordinal0 [0x00254ADE+936670]
Ordinal0 [0x002546C0+935616]
GetHandleVerifier [0x00625E4C+2410924]
BaseThreadInitThunk [0x765AFA29+25]
RtlGetAppContainerNamedObjectPath [0x777A7A9E+286]
RtlGetAppContainerNamedObjectPath [0x777A7A6E+238]
, error=invalid session id, message=invalid session id}
Build info: version: 'unknown', revision: '1969d75', time: '2016-10-18 09:43:45 -0700'
System info: host: 'DESKTOP-HAH9N6P', ip: '172.16.12.8', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.11'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:375)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:449)
at org.openqa.selenium.By$ByName.findElement(By.java:303)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:360)
at demoSelenium.Locators.main(Locators.java:21)
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:373)
4 more
这个错误信息...
Starting ChromeDriver 93.0.4577.63 (ff5c0da2ec0adeaed5550e6c7e98417dac77d98a-refs/branch-heads/4577@{#1135}) on port 40273
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Nov. 11, 2021 3:43:35 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {stacktrace=Backtrace:
Ordinal0 [0x003CD403+2479107]
...暗示 无法 initiate/spawn 新的 Google Chrome 浏览上下文 .
您的主要问题是您使用的二进制文件版本之间不兼容。虽然您使用的是最新的 Chrome 驱动程序之一 v93.0.4577.63 但 版本是 3.0.1这是 old 和 ancient.
解决方案
确保:
- JDK 升级到当前等级 JDK 8u311.
- Selenium 已升级到当前级别 Version 4.0.0。
- Chrome驱动程序 已更新至当前 ChromeDriver v95.0 级别。
- Chrome 已更新至当前 Chrome 版本 95.0 级别。 (根据 ChromeDriver v78.0 release notes)
- 系统重启。
- 以 非 root 用户身份执行您的 @Test。
- 始终在
tearDown(){}
方法中调用 driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.
我在简单程序中遇到错误,之前它运行良好,现在由于某种原因我无法执行它。
我正在使用硒 3.0.1
Chrome 驱动程序 93.0.4
请检查我的代码和下面的错误。
如果有人能帮助我,我将不胜感激
我的代码:
public class MouseOverDemo {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\SeleniumJars\chromedriver.exe");
WebDriver driver = new ChromeDriver();
// JavascriptExecutor js = (JavascriptExecutor)driver;
//driver.get("http://demo.guru99.com/test/drag_drop.html");
driver.get("https://jqueryui.com/resizable/");
Actions action = new Actions(driver);
WebElement resize = driver.findElement(By.cssSelector("body.jquery-ui.page.page-id-43.page-template-default.page-slug-resizable.single-author.singular:nth-child(2) div:nth-child(2) div.clearfix.row:nth-child(3) div.content-right.twelve.columns div:nth-child(1) > iframe.demo-frame:nth-child(5)"));
driver.switchTo().frame(resize);
WebElement resize1 = driver.findElement(By.id("resizable"));
action.moveToElement(resize1, 2500, 2500).build().perform();
System.out.println("Resize is done");
}
错误:
Starting ChromeDriver 93.0.4577.63 (ff5c0da2ec0adeaed5550e6c7e98417dac77d98a-refs/branch-heads/4577@{#1135}) on port 40273
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Nov. 11, 2021 3:43:35 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {stacktrace=Backtrace:
Ordinal0 [0x003CD403+2479107]
Ordinal0 [0x00367D51+2063697]
Ordinal0 [0x00271F90+1056656]
Ordinal0 [0x00291A80+1186432]
Ordinal0 [0x002B58E7+1333479]
Ordinal0 [0x002B395A+1325402]
Ordinal0 [0x002B351D+1324317]
Ordinal0 [0x00254D3F+937279]
Ordinal0 [0x00255246+938566]
Ordinal0 [0x00255521+939297]
GetHandleVerifier [0x0054F3F6+1531734]
GetHandleVerifier [0x005FE9AE+2249998]
GetHandleVerifier [0x004539AB+501003]
GetHandleVerifier [0x00452A29+497033]
Ordinal0 [0x0036D11D+2085149]
Ordinal0 [0x00254ADE+936670]
Ordinal0 [0x002546C0+935616]
GetHandleVerifier [0x00625E4C+2410924]
BaseThreadInitThunk [0x765AFA29+25]
RtlGetAppContainerNamedObjectPath [0x777A7A9E+286]
RtlGetAppContainerNamedObjectPath [0x777A7A6E+238]
, error=invalid session id, message=invalid session id}
Build info: version: 'unknown', revision: '1969d75', time: '2016-10-18 09:43:45 -0700'
System info: host: 'DESKTOP-HAH9N6P', ip: '172.16.12.8', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.11'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:375)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByName(RemoteWebDriver.java:449)
at org.openqa.selenium.By$ByName.findElement(By.java:303)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:360)
at demoSelenium.Locators.main(Locators.java:21)
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:373)
4 more
这个错误信息...
Starting ChromeDriver 93.0.4577.63 (ff5c0da2ec0adeaed5550e6c7e98417dac77d98a-refs/branch-heads/4577@{#1135}) on port 40273
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Nov. 11, 2021 3:43:35 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Nov. 11, 2021 3:43:36 P.M. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.WebDriverException: Returned value cannot be converted to WebElement: {stacktrace=Backtrace:
Ordinal0 [0x003CD403+2479107]
...暗示
您的主要问题是您使用的二进制文件版本之间不兼容。虽然您使用的是最新的 Chrome 驱动程序之一 v93.0.4577.63 但
解决方案
确保:
- JDK 升级到当前等级 JDK 8u311.
- Selenium 已升级到当前级别 Version 4.0.0。
- Chrome驱动程序 已更新至当前 ChromeDriver v95.0 级别。
- Chrome 已更新至当前 Chrome 版本 95.0 级别。 (根据 ChromeDriver v78.0 release notes)
- 系统重启。
- 以 非 root 用户身份执行您的 @Test。
- 始终在
tearDown(){}
方法中调用driver.quit()
以优雅地关闭和销毁 WebDriver 和 Web Client 实例.