首页 > 解决方案 > 运行 selenium 脚本时出现错误“OpenQA.Selenium.WebDriverException: invalid session id”

问题描述

下面是我的脚本,在运行我的脚本时通过,但我看到并非所有方法都已执行,并且控制台中有错误。

控制台错误:

  (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17134 x86_64)
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementById(String id)
   at OpenQA.Selenium.By.<>c__DisplayClass16_0.<Id>b__0(ISearchContext context)
   at OpenQA.Selenium.By.FindElement(ISearchContext context)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by)
   at Selenium_testing.SearchTCOData.SearchtCOData() in C:\Users\dvemula\source\repos\Selenium testing\Selenium testing\SearchTCOData.cs:line 23
   at Selenium_testing.Login.Main(String[] args) in C:\Users\dvemula\source\repos\Selenium testing\Selenium testing\login.cs:line 24

代码:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Threading;
class LoginTCO
{
    static IWebDriver driver = new ChromeDriver();
    static void main()
    {
        driver.Navigate().GoToUrl("someurl");
        Thread.Sleep(10000);
        Click();
        Console.WriteLine("clicked");
        driver.Quit();
    }
    private static void Click()
    {
        driver.FindElement(By.CssSelector(".glyphicon-th-list")).Click();
        driver.FindElement(By.CssSelector(".glyphicon-wrench")).Click();
        driver.FindElement(By.CssSelector(".glyphicon-paste")).Click();
        driver.FindElement(By.CssSelector(".idicon")).Click();
    }
}

标签: c#seleniumselenium-webdriverselenium-chromedriver

解决方案


出现此问题的原因有 2 个。

1) WebDriverManager 未使用并且以某种方式更新了 chromedriver.exe 二进制文件的情况,该二进制文件支持 chrome 浏览器版本 74,但操作系统的浏览器为 72。在这种情况下,您需要更新与浏览器版本兼容的二进制文件。

2) WebDriverManager 在使用时会自动下载浏览器二进制文件。它尝试下载可能与您的 chrome 浏览器安装版本不兼容的最新 chromedriver 二进制文件,比如说 72(我的猜测)。如果是这样,在这种情况下,我们必须下载与您的浏览器版本 72 兼容的 chromedriver 二进制文件。为此,请参考以下行来解决此问题。

最新 Chrome 驱动程序版本 74 的问题


推荐阅读