【问题标题】:Selenium RC fireEvent() not working in C#Selenium RC fireEvent() 在 C# 中不起作用
【发布时间】:2011-12-09 08:28:56
【问题描述】:

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

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

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

所有注册信息都已填满,但未触发模糊事件。注册按钮保持禁用状态。 另外,我用java写了一个完全相同的测试,没有任何问题就通过了。

我很想用java完成它,但我受限于我可以用于这个任务的语言; C#。谁能告诉我可能是什么导致了这个问题。

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题,并通过进入 DOM 并使用 javascript 触发 blur 事件找到了解决方案。我将该方法编写为 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
        {}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多