Selenium RC fireEvent()无法在C#中工作

时间:2011-10-17 14:15:51

标签: c# unit-testing selenium automation automated-tests

我正在编写一个自动测试来测试注册页面。此页面上的每个文本框都在模糊事件上进行验证。注册按钮仅在所有文本框的验证通过后才会启用。

我已为每个文本框执行以下操作

selenium.Type(textbox_id,content); //在每轮测试中以编程方式生成内容 selenium.FireEvent(textbox_id,“blur”);

所有注册信息都会被填满,但不会触发模糊事件。 SignUp按钮保持禁用状态。 另外,我在java中编写了一个完全相同的测试,它没有遇到任何问题。

我很乐意用java编写它,但我只能使用我可以用于此任务的语言; C#。有人能告诉我可能导致这个问题的原因。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,通过进入DOM并使用javascript触发模糊事件找到了解决方案。我在IWebElement上将该方法编写为扩展方法。请参阅以下代码:

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
    {}
}