0

C# で NUnit と Selenium を使用して、複数のブラウザーで複数のテストケースを実行するフレームワークを構築しています。この場合、Microsoft Edge もサポートされます。テストをセットアップすると、chrome と firefox は正しく実行されますが、edge で次のエラーが発生します。

OpenQA.Selenium.WebDriverException : null 応答の例外がスローされ、URL http://localhost:55992/sessionのリモート WebDriver サーバーに HTTP 要求が送信されました。. 例外のステータスは ReceiveFailure で、メッセージは次のとおりでした: 基になる接続が閉じられました: 受信時に予期しないエラーが発生しました。----> System.Net.WebException : 基になる接続が閉じられました: 受信時に予期しないエラーが発生しました。----> System.IO.IOException : トランスポート接続からデータを読み取れません: 既存の接続がリモート ホストによって強制的に閉じられました。----> System.Net.Sockets.SocketException : 既存の接続がリモート ホストによって強制的に閉じられました [2018. 06. 17. 17:08:22 警告] OpenQA.Selenium.Remote.HttpCommandExecutor.MakeHttpRequest(HttpRequestInfo requestInfo) で OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute) で OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(コマンド commandToExecute) OpenQA で。

私はこの特定のエラーを調べようとしましたが、最も近いものは、リモート ドライバーが 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();
    }
}
}
4

1 に答える 1