我不知道这是否可能,但我希望有一种方法可以让我运行使用 chromedriver 的应用程序,并且当出现错误提示我使用错误版本时,请访问网络找到它的最新版本。

我的想法是我会有一些像这样的 try/catch 语句

    public void StartChromeDriver()
    {
        IWebDriver iwd;

        try
        {
            iwd = new ChromeDriver();
        }
        catch (InvalidOperationException exc)
        {
            Console.WriteLine("Invalid version of chromedriver");
            //this goes into the message from the exception and gets me not only the current version that I'm using,
            //but also the version that I need
            string message = exc.Message;
            string ver = Regex.Match(message, "This version of ChromeDriver only supports Chrome version [0-9]{2,3}").Value;
            int currentversion = int.Parse(ver.Remove(0, ver.Length - 3).Trim());
            ver = Regex.Match(message, @"Driver info: chromedriver = [0-9\.]+").Value;
            string neededversion = "";
            foreach (char c in ver)
            {
                if (char.IsDigit(c) || c == '.')
                    neededversion += c;
            }
            GetNewDriver(currentversion, neededversion);
        }
        catch (Exception exc)
        {
            Console.WriteLine($"UNHANDLED EXCEPTION THROWN: \n{exc}");
        }

        return null;
    }

    private void GetNewDriver(int currentversion, string neededversion)
    {
        /**
         DO THE MAGIC HERE
         Get the driver using the information provided here
         **/

        ZipFile.CreateFromDirectory("./", "./chromedriver.zip");
        ZipFile.ExtractToDirectory("./chromedriver.zip", "./chromedriver.exe");
    }

老实说,我真的不知道从哪里开始,但这是我自己能做的最多的事情。 除了 zip 的东西,我已经测试了所有东西,但这并不是我真正的问题。 我如何使用代码尝试、失败并提取最新的 chrome 驱动程序?

  ask by Mark Bouwman translate from so

本文未有回复,本站智能推荐:

2回复

在C#中使用新版本的chromedriver,Chrome和Selenium时点击出现问题

我正在使用最新的Chrome 77.0.3865.90,我已经尝试了chromedriver版本-77.0.3865.4000,76.0.3809。*代码在C#中 我在页面上找到一个元素,然后单击它。 这曾经可以正常工作,我认为在新的chrome浏览器更新(至77.0.3865.90)之
2回复

ChromeDriver 与 Chrome 版本不匹配 - 无法使用节点模块“@wdio/selenium-standalone-service”获取最新版本

在我的 codeceptjs 设置中,我将 @wdio/selenium-standalone-service 更新到最新版本 6.9.0 这似乎安装了 chromedriver 版本:'85.0.4183.87' 现在 chrome 浏览器版本升级到 87.0.4280.66,之前运行良好的测试
5回复

如何使用自制软件将 chromedriver 更新到 MacOS Catalina 上的最新版本?

我当前的版本是81.0.4044.69 ,我想更新到最新版本83.0.4103.39 当我打开终端并执行以下操作时: brew cask install chromedriver 它说: Warning: Cask 'chromedriver' is already installed. 如何
1回复

以编程方式获取子元素selenium c#

我想要实现的是以编程方式打开启用并显示的网页上的第一个视频。 我通过使用Xpath搜索方法并点击第一个可用的视频元素。 我想要实现的是打开分隔符(视频元素)并在其内部搜索另一个分隔符,但特别是我已经点击的分隔符内部的分隔符。 这就是我现在尝试这样做的方式: 有什么建议么? 如
1回复

Stop Driver Process after - session not created: 此版本的 ChromeDriver 仅支持 Chrome 版本

尝试初始化 ChromeDriver 以在 C# 中运行 selenium 测试时,此不匹配错误会导致 chromedriver 可执行文件保持运行。 我修改了代码以捕获异常,然后调用Driver.Quit()但这对执行过程没有影响。 如何防止驱动程序成为僵尸进程(技术上不是僵尸)。
1回复

使用chromedriver获取硒中的图像源

我正在使用C#中的Selenium Webdriver,并尝试使用GetProperty方法获取图像的src,以验证是否显示了正确的图像。 使用firefox运行时,我得到的图像源如下: 哪个是正确的图像源。 当使用firefox运行此程序时,一切都按预期方式工作,尽管当我
1回复

如何使用57或更高版本的ChromeDriver 2.32和Chrome下载PDF

从57版开始,Google确实删除了chrome://plugins选项。 我发现,如果我要下载PDF文件而不是在Chrome Viewer中打开它,则需要打开chrome://settings/content/pdfDocuments 是否可以通过以下类似的首选项在Chrome驱动程
2回复

Chromedriver 仍然只支持带有更新驱动程序的版本 79

这很可能是一个重复的问题,但在我环顾四周时,我找不到与我的问题完全匹配的答案。 我正在使用 selenium 和 NUnit 来运行单元测试,因为我有一段时间没有使用它了,现在我回来了,我在所有 chrome 测试中都遇到了这个错误: OneTimeSetUp: System.Invali