我正在编写一个自动化测试来测试注册页面。此页面上的每个文本框都在模糊事件上进行了验证。仅当所有文本框的验证均已通过时,注册按钮才会启用。
我为每个文本框执行了以下操作
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/