selenium

Selenium PageFactory deprecated for .NET Core

See alternate implementation here.

blocking urls in selenium

Sometimes we want to block specific URLs from loading, for example Google Analytics so we don’t artificially inflate our statistics.

readonly string[] _blockUrls = new [] {
    "www.google-analytics.com"
};

public ChromeDriver GetDriver() 
{
    var options = new ChromeOptions();
    var rules = string.Join(',', _blockUrls.Select(r => $"MAP {r} 127.0.0.1"));
    options.AddArgument($"--host-resolver-rules={rules}");
    return new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
}

killing long-running processes

When ChromeDriver fails to gracefully terminate, it can hold the build agent from completing the build until it times out (~2 hours). Use this to murder the process on Assembly Cleanup.

[TestClass]
public class Teardown
{
    [AssemblyCleanup]
    static public void AssemblyCleanup()
    {
        foreach (var process in Process.GetProcessesByName("chromedriver"))
        {
            process.Kill();
        }
    }
}

selenium packages for dotnet core

Selenium.WebDriver Selenium.WebDriver.ChromeDriver Selenium.Chrome.WebDriver - for moving chromedriver.exe into bin DotNetSeleniumExtras.WaitHelpers - for ExpectedConditions