开发者

Selenium RC fireEvent() not working in C#

开发者 https://www.devze.com 2023-04-13 08:45 出处:网络
I am writing an automated test to test a sig开发者_高级运维n up page. Each of the textbox on this page is validated on blur event. Sign up button is only enabled if the validation for all textboxes ha

I am writing an automated test to test a sig开发者_高级运维n up page. Each of the textbox on this page is validated on blur event. Sign up button is only enabled if the validation for all textboxes has passed.

I have performed for each textbox the following

selenium.Type(textbox_id, content); //where content is programmatically generated in each round of test selenium.FireEvent(textbox_id, "blur");

All the sign up info gets filled up, but non it's blur event triggered. SignUp button remain disabled. Also, I have written an exact same test in java, which passed without the slightest bit of problem.

I would love to finish writing it in java, but I am restricted to the language I can use for this task; C#. Can someone tell me what might be causing this problem.


I had the same problem and found a solution by reaching into the DOM and firing the blur event using javascript. I wrote the method as an extension method on IWebElement. See the code below:

public static void Blur(this IWebElement element)
{
    var jsExecutor = (IJavaScriptExecutor)Context.Driver;

    try
    {
        jsExecutor.ExecuteScript(
            @"var fireOnThis = arguments[0];
             fireOnThis.scrollIntoView(false);
             var evt = 'blur';      
             if( document.createEvent ) {
             var evObj = document.createEvent('MouseEvents');
             evObj.initEvent(evt, true, false);
             fireOnThis.dispatchEvent(evObj);
             } else if (document.createEventObject) {
            fireOnThis.fireEvent('on'+evt);
        }", element);
    }
    catch
    {}
}
0

精彩评论

暂无评论...
验证码 换一张
取 消