Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FirefoxWebdriver No data is available for encoding 437

Tags:

c#

.net-core

I want to create a FirefoxWebdriver but get the following error

  Message: 
    Initialization method Sma.Ldx.Systemtest.Ui.Tests.IbaTest.TestInitialize
 threw exception. System.TypeInitializationException: The type initializer for 
'System.IO.Compression.ZipStorer' threw an exception. ---> 
System.NotSupportedException: No data is available for encoding 437. For 
information on defining a custom encoding, see the documentation for the 
Encoding.RegisterProvider method..

it is a netstandard2.0 lib and runs on dotnet core 2.2 Can anybody help?

I tried to import System.Text.Encoding.CodePages and try to use System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance) but this is not supported in dotnetcore2.2

private static IWebDriver InitializeFirefoxDriver(bool headless, bool remote, Uri seleniumHubUri, PlatformType platform, string locale, string webDriverPath)
        {
            var options = new FirefoxOptions()
            {
                Profile = new FirefoxProfile()
                {
                    AcceptUntrustedCertificates = true,
                    AssumeUntrustedCertificateIssuer = true
                },
            };
            options.AddArgument($"--lang={locale}");
            if (headless || remote)
            {
                options.AddArgument("-headless");
            }
            options.PlatformName = platform.ToString();
            FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(webDriverPath, "geckodriver.exe");
            service.Start();
            return remote ? new RemoteWebDriver(seleniumHubUri, options) : new FirefoxDriver(service, options);
        }

I except the Firefox Browser to start but get an encoding error.

like image 259
Christian Avatar asked Jun 28 '19 07:06

Christian


2 Answers

Add NuGet Package System.Text.Encoding.CodePages

Before Creating the FirefoxDriver object, do this:

 CodePagesEncodingProvider.Instance.GetEncoding(437);
 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
like image 95
Christian Avatar answered Oct 02 '22 15:10

Christian


One option to resolve this is to upgrade the Selenium.WebDriver package to 4.*.

Context: This is an instance of this GitHub issue: https://github.com/SeleniumHQ/selenium/issues/4816. This issue has been fixed in the 4.x branch, as the dependency that is causing this issue has been removed in that version.

like image 42
iinuwa Avatar answered Oct 02 '22 16:10

iinuwa