c# - Selenium RC fireEvent() 在 C# 中不起作用

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

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

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

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

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

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

最佳答案

我遇到了同样的问题,并通过进入 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
    {}
}

关于c# - Selenium RC fireEvent() 在 C# 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7795084/

相关文章:

python - 如何在网络服务器中运行 Selenium 脚本?

java - Selenium - 运行 ChromeDriver 而不修改路径

c# - Selenium 等待逻辑

c# - C# 运行空间/管道如何执行 powershell 脚本?

c# - 如何在 Linq 中使用 Sql View

c# - 如何在 xamarin.studio 中的 onclick 事件中调用函数

c# - 如何查看代码而不是覆盖 block

c# - 具有最大值的文本框

ruby-on-rails - 如何在不删除数据库内容的情况下运行 Rails 集成测试?

javascript - 如何使用 Mocha、Chai、Sinon 对动态日期/时间进行单元测试