首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何正确设置edgedriver?获取以下错误

如何正确设置edgedriver?获取以下错误
EN

Stack Overflow用户
提问于 2018-06-17 23:24:46
回答 1查看 2.1K关注 0票数 0

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

OpenQA.Selenium.WebDriverException :在向远程WebDriver服务器发送对 http://localhost:55992/session的请求时引发了具有空响应的异常。异常的状态是ReceiveFailure,消息是:底层连接已关闭:接收时发生意外错误。-> System.Net.WebException :底层连接已关闭:接收时发生意外错误。-> System.IO.IOException :无法从传输连接读取数据:现有连接已被远程主机强制关闭。-> System.Net.Sockets.SocketException :已有连接被远程主机2018强制关闭。06。17. 17:08:22在OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command ) at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command requestInfo) at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String commandToExecute) at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor requestInfo) at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities) at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)的字典`2参数,位于OpenQA.Selenium.Edge.EdgeDriver..ctor(EdgeOptions options的ICapabilities desiredCapabilities)位于C:\SeleniumNUnit -Copy\SeleniumNUnit.Tests\Class1.cs:位于SeleniumNUnit.Tests.WebDriverFactory.WebDriver(BrowserType类型的C:\SeleniumNUnit -Copy\SeleniumNUnit.Tests\Class1.cs的OpenQA.Selenium.Edge.EdgeDriver..ctor()位于C:\SeleniumNUnit -Copy\SeleniumNUnit.Tests\Class1.cs:位于SeleniumNUnit.Tests.WebDriverFactory..ctor(BrowserType类型的第50行-Copy\SeleniumNUnit\Class1.cs: C:\SeleniumNUnit -Copy\SeleniumNUnit\Class1.cs中SeleniumNUnit.DemoTest..ctor(BrowserType浏览器)的第24行:第12行-- System.Net.HttpWebRequest.GetResponse() at OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo的WebException)--System.Net.Sockets.NetworkStream.Read的IOException(Byte[] buffer,Int32偏移,Int32大小) System.Net.PooledStream.Read(Byte[]缓冲区,Int32偏移,Int32大小) System.Net.Connection.SyncRead(HttpWebRequest请求,布尔userRetrievedStream,布尔probeRead) -- System.Net.Sockets.Socket.Receive(Byte[]缓冲区,Int32偏移,Int32大小,SocketFlags socketFlags) System.Net.Sockets.NetworkStream.Read(Byte[]缓冲区,Int32偏移,大小)的SocketException

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

WebDriverFactory:

代码语言:javascript
复制
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;
    }


}
}

TestCode:

代码语言:javascript
复制
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();
    }
}
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-19 06:21:21

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

Selenium.WebDriver.MicrosoftDriver v17.17134.0 crash when running the test

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50898016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档