WatiN bietet so einige Möglichkeiten zum Testen von Webseiten. Bald stellt man aber fest dass nur wenige input-Felder out-of-the-box zur Verfügung stehen. Glücklicherweise ist es aber sehr einfach, dies zu erweitern. Im konkreten Fall ging es um ein input-Feld vom Typ date.

In Anlehnung an eine Antwort auf stackoverflow hab ich mir dann folgende Klasse gebastelt:

[ElementTag("input", InputType = "date")]
public class DateTextField : TextField
{
    public DateTextField(DomContainer domContainer, INativeElement element)
        : base(domContainer, element)
    {
    }

    public DateTextField(DomContainer domContainer, ElementFinder finder)
        : base(domContainer, finder)
    {
    }

    public static void Register()
    {
        Type typeToRegister = typeof(DateTextField);
        ElementFactory.RegisterElementType(typeToRegister);
    }
}

Unser neues DateTextField kann danach (nach registrierung über die statische Register()-Methode) mit dem Browserobjekt verwendet werden.

DateTextField.Register();
browser.ElementOfType<DateTextField>("date");

Auch die Verwendung in einer Page ist möglich - hier bietet es sich an, die Registrierung im Konstruktor zu erledigen.

public class DateInputPage : Page
{
    public DateInputPage()
    {
        DateTextField.Register();
    }

    [FindBy(Id = "date")]
    public DateTextField DateField;
}