New to Telerik Test Studio? Download free 30-day trial

JavaScript Events

Invoking JavaScript Events

Telerik Testing Framework allows you to invoke JavaScript events directly with or without event arguments. For example:

// Invoke the OnFocus event
HtmlButton b = Find.ById<HtmlButton>("b");
b.InvokeEvent(ScriptEventType.OnFocus);
// or
Actions.InvokeEvent(b.BaseElement, ScriptEventType.OnFocus);

// To invoke an event with an argument do something like this
HtmlTextArea area1 = Find.ById<HtmlTextArea>("area1");
Element body1 = Find.ById("body1");

MouseEvent me = new MouseEvent();
me.Type = "mouseover";
me.SetRelatedTarget(body1);
area1.InvokeEvent(me);

JavaScript Event Handlers

The framework gives you the ability to attach a .NET event handler to your JavaScript happening in the browser. Start by defining your event handler like this:

private volatile bool _clickHandled;
private System.Threading.AutoResetEvent _clickARE;

private void OnClick(object sender, JavascriptEventArgs e)
{
    _clickHandled = true;
    _clickARE.Set();
}

All that's left is to attach the event handler to an element on the DOM like this:

[TestMethod]
public void ClickHandler()
{
    _clickARE = new System.Threading.AutoResetEvent(false);
    _clickHandled = false;

    HtmlButton b = Find.ById<HtmlButton>("b");

    // Attach a listener to the click event on the button.
    b.AddEventListener("click", OnClick);

    // Invoke the event.
    b.InvokeEvent(ScriptEventType.OnClick);

    // Wait until the event is fired.
    _clickARE.WaitOne(500);

    Assert.IsTrue(_clickHandled);
}