簡體   English   中英

線程“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:

我在簡單程序中遇到錯誤,之前它運行良好,現在由於某種原因我無法執行它。 我正在使用 selenium 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]

...暗示ChromeDriver無法啟動/生成新的Google Chrome 瀏覽上下文

您的主要問題是您使用的二進制文件版本之間的不兼容 雖然您使用的是最近的 ChromeDriver v93.0.4577.63之一,但Selenium版本是3.0.1 ,這是古老古老的


解決方案

確保這件事:

  • JDK升級到當前級別JDK 8u311
  • Selenium升級到當前級別Version 4.0.0
  • ChromeDriver更新到當前ChromeDriver v95.0級別。
  • Chrome已更新到當前的Chrome 版本 95.0級別。 (根據ChromeDriver v78.0 發行說明
  • 進行系統重啟
  • 非 root用戶身份執行@Test
  • 始終在tearDown(){}方法中調用driver.quit()以優雅地關閉和銷毀WebDriverWeb Client實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM