public void ChangeEventIsFiredAppropriatelyWhenFocusIsLost()
{
driver.Url = javascriptPage;
IWebElement input = driver.FindElement(By.Id("changeable"));
input.SendKeys("test");
driver.FindElement(By.Id("clickField")).Click(); // move focus
EqualConstraint firstConstraint = new EqualConstraint("focus change blur");
EqualConstraint secondConstraint = new EqualConstraint("focus change blur");
Assert.That(driver.FindElement(By.Id("result")).Text.Trim(), firstConstraint | secondConstraint);
input.SendKeys(Keys.Backspace + "t");
driver.FindElement(By.XPath("//body")).Click(); // move focus
firstConstraint = new EqualConstraint("focus change blur focus blur");
secondConstraint = new EqualConstraint("focus blur change focus blur");
EqualConstraint thirdConstraint = new EqualConstraint("focus blur change focus blur change");
EqualConstraint fourthConstraint = new EqualConstraint("focus change blur focus change blur"); //What Chrome does
// I weep.
Assert.That(driver.FindElement(By.Id("result")).Text.Trim(),
firstConstraint | secondConstraint | thirdConstraint | fourthConstraint);
}