1

我在简单程序中遇到错误,之前它工作正常,现在由于某种原因我无法执行它。我正在使用 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
4

1 回答 1

1

此错误消息...

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 。
  • 始终driver.quit()tearDown(){}方法内调用以优雅地关闭和销毁WebDriverWeb Client实例。
于 2021-11-11T21:55:47.250 回答