当前位置: 首页 > 知识库问答 >
问题:

如何正确设置edgedriver?得到以下错误

林英武
2023-03-14

我在C#中使用NUnit和Selenium来构建一个框架,其中包含在多个浏览器上运行多个测试用例。在这种情况下也支持Microsoft Edge。当我设置测试时,chrome和firefox正常运行,但edge出现以下错误:

OpenQA。硒。WebDriverException:向远程WebDriver服务器发送HTTP请求以获取URL时,引发了一个响应为null的异常http://localhost:55992/session.异常状态为ReceiveFailure,消息为:基础连接已关闭:receive上发生意外错误----

我试图查找这个特定的错误,我得到的最接近的结果是远程驱动程序试图发送一个HTTP请求,但在本例中失败了。由于Chrome和FF运行正常,我不知道Edge出了什么问题。

WebDriverFactory:

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using WebDriverManager;
using WebDriverManager.DriverConfigs.Impl;
using System.IO;
using OpenQA.Selenium.Edge;
using System;

namespace SeleniumNUnit.Tests
{
    /// <summary>
    /// A static factory object for creating WebDriver instances
    /// </summary>
    public class WebDriverFactory
    {
        public static string path = "C:\\Drivers\\";
        public IWebDriver Driver;

    protected WebDriverFactory(BrowserType type)
    {
        Driver = WebDriver(type);
    }

    [OneTimeTearDown]
    public void TestFixtureTearnDown()
    {
        Driver.Quit();
    }

    /// <summary>
    /// Types of browser available for proxy examples.
    /// </summary>
    public enum BrowserType
    {
        IE,
        Chrome,
        Firefox,
    }

    public static IWebDriver WebDriver(BrowserType type)
    {
        IWebDriver driver = null;

        switch (type)
        {
            case BrowserType.IE:
                driver = EdgeDriver();
                break;
            case BrowserType.Firefox:
                driver = FirefoxDriver();
                break;
            case BrowserType.Chrome:
                driver = ChromeDriver();
                break;
        }

        return driver;
    }

    /// <summary>
    /// Creates Internet Explorer Driver instance.
    /// </summary>
    /// <returns>A new instance of IEDriverServer</returns>
    private static IWebDriver EdgeDriver()
    {
        new DriverManager().SetUpDriver("https://download.microsoft.com/download/F/8/A/F8AF50AB-3C3A-4BC4-8773-DC27B32988DD/MicrosoftWebDriver.exe", Path.Combine(path, "MicrosoftWebDriver.exe"), "MicrosoftWebDriver.exe");
        IWebDriver driver = new EdgeDriver();   
        return driver;
    }

    /// <summary>
    /// Creates Firefox Driver instance.
    /// </summary>
    /// <returns>A new instance of Firefox Driver</returns>
    private static IWebDriver FirefoxDriver()
    {
        new DriverManager().SetUpDriver(new FirefoxConfig());
        FirefoxOptions options = new FirefoxOptions();
        IWebDriver driver = new FirefoxDriver(options);
        return driver;
    }


    /// <summary>
    /// Creates Chrome Driver instance.
    /// </summary>
    /// <returns>A new instance of Chrome Driver</returns>
    private static IWebDriver ChromeDriver()
    {
        new DriverManager().SetUpDriver("https://chromedriver.storage.googleapis.com/2.40/chromedriver_win32.zip", Path.Combine(path, "chromedriver.exe"), "chromedriver.exe");
        ChromeOptions chromeOptions = new ChromeOptions();
        IWebDriver driver = new ChromeDriver(chromeOptions);
        return driver;
    }


}
}

测试代码:

using System;
using NUnit.Framework;
namespace SeleniumNUnit
{
    [TestFixture(SeleniumNUnit.Tests.WebDriverFactory.BrowserType.Chrome)]
    [TestFixture(SeleniumNUnit.Tests.WebDriverFactory.BrowserType.Firefox)]
    [TestFixture(SeleniumNUnit.Tests.WebDriverFactory.BrowserType.IE)]
    public class DemoTest : SeleniumNUnit.Tests.WebDriverFactory
    {
        public DemoTest(SeleniumNUnit.Tests.WebDriverFactory.BrowserType browser)
        : base(browser)
    {

    }

    [OneTimeSetUp]
    public void SetUpEnvironment()
    {
        Driver.Navigate().GoToUrl("http://google.com");

    }

    [Test]
    public void validateTitle()
    {
        Assert.That(Driver.Title.Contains("Google"));
    }

    [OneTimeTearDown]
    public void tearDown()
    {
        Driver.Quit();
        Driver.Dispose();
    }
}
}

共有1个答案

晏晨朗
2023-03-14

我也面临同样的问题,但后来我发现:

硒。Web驱动程序。microsoftDriver v17.17134.0在运行测试时崩溃

长话短说,检查你的Windows版本。如果是17134版本,则获取MicrosoftWebDriver 17134版本。但是,如果您在16299.xxx,那么您必须使用16299版本的MicrosoftWebDriver。

 类似资料:
  • 问题内容: 我在设置布局时遇到一些问题。(不要介意按钮的大小,我只想正确地了解布局)。 Here’s my code: 谁能帮助我了解布局的工作原理? 我一直在观看很多视频,并尝试过不同的布局,但仍然无法正确完成。告诉我是否使用了正确的布局,或者是否应该更改布局 。 问题答案: 如 该答案中所建议的那样,可以为左部分提供所需的全部控制。如果您愿意为简单起见而牺牲一些控制权,则可以在a里面放两个面板

  • 问题内容: 我正在尝试运行Java程序,但是它采用默认的GMT时区而不是OS定义的时区。我的JDK版本是1.5,操作系统是Windows Server Enterprise(2007) Windows指定了中央时区,但是当我运行以下程序时,它给了我GMT时间。 这是输出 请注意,我不想从应用程序中设置时区。我希望JVM使用的时区应该是操作系统中指定的时区。(对于具有JDK 1.4版和Microso

  • 问题内容: 我不时看到有关连接数据库的问题。 大多数答案不是我做的方式,否则我可能只是无法正确获得答案。无论如何; 我从未考虑过,因为我的工作方式对我有效。 但是这里有个疯狂的想法;也许我做错了所有,如果是这样的话;我真的很想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问。 这是我的做法: 首先,这是我的文件结构 (向下精简) : index.php 在最顶部,我有。 load

  • 问题内容: 我有一个关于mysql时区的怪异问题。 在我的网站配置文件中,我这一行设置了时区: 有趣的是,如果我在此之后添加另一行,例如: 执行该代码后,时间将正确显示。 但是,在其他一些查询中,我在表中插入行,这些表的列名为date,默认为CURRENT_TIMESTAMP。 这样插入行: (“会话”表的列默认为CURRENT_TIMESTAMP) 但是插入到数据库中的值仍指向服务器的时区:((

  • 问题内容: 遵循OnlyOffice帮助中心的说明,将创建由浏览器声明为无效的安全证书,因为它是自签名的。 目的是在适用于NextCloud的Docker上使用OnlyOffice的服务器,该服务器已在另一台服务器上正常运行。 当前,已在说明建议的目录中创建证书: 我已经按照所有给定的步骤进行操作,但是它不起作用。 有没有办法使用LetsEncrypt代替自签名证书? 我不是IT管理人员,我是一个

  • 问题内容: Django(1.5)对我来说很好用,但是当我启动Python解释器(Python 3)进行检查时,尝试导入时会遇到最奇怪的错误 当它在Python解释器之外可以正常工作时,如何对其进行不正确的配置?在我的Django设置中,设置为: …这是如何配置不正确的? 问题答案: 你不能只启动Python并检查内容,Django不知道你要处理哪个项目。你必须执行以下操作之一: 采用 使用(或你