使用 WatiN 将鼠标悬停在元素上

发布于 2024-11-10 16:57:58 字数 272 浏览 4 评论 0原文

我从事一套使用 WatiN 和 MBUnit 开发的自动化测试。我听说可以让 WatiN “悬停”在某个元素上,但我似乎无法使用我过去使用过的方法让它工作。还有另一种我不知道的方法可以做到这一点吗?我尝试过仅使用 FireEvent 'onmouseover',并使用 FireEvent 并单击链接。

myDiv.HoverLink.FireEvent("onmouseover");
myDiv.HoverLink.Click();

有什么建议吗?提前致谢!

I work on a suite of automated tests that have been developed using WatiN and MBUnit. I've heard that it's possible to get WatiN to 'hover' over an element, but I can't seem to get it working using the methods I've used in the past. Is there another way to do this that I don't know about? I've tried using just FireEvent 'onmouseover', and using the FireEvent plus clicking on the link.

myDiv.HoverLink.FireEvent("onmouseover");
myDiv.HoverLink.Click();

Any suggestions? Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

您的好友蓝忘机已上羡 2024-11-17 16:57:58

尝试在要悬停的对象上使用 MouseEnter 方法。

这是一个例子:

hoverLink.MouseEnter();

Try using the MouseEnter method on the object you want to hover.

Here's an example:

hoverLink.MouseEnter();
墨落成白 2024-11-17 16:57:58
    /// <summary>
    /// Mouse Over on given <see cref="Element"/>
    /// </summary>
    /// <param name="element">element</param>
    /// <returns>Nothing</returns>
    public static void MouseOver(this Element element)
    {
        var jref = element.GetJavascriptElementReference();
        var dom = element.DomContainer;

        var evt = new JSEventCreator(jref, null);
        var evtProp = new NameValueCollection();
        evtProp.Add("windowObject", "window");

        var scriptCode = evt.CreateMouseEventCommand("mouseover", evtProp);
        Logger.LogDebug(scriptCode);
        scriptCode = scriptCode.ToString() + jref + ".dispatchEvent(event);";

        string result = dom.Eval(scriptCode);
        Logger.LogAction(result);
        dom.WaitForComplete();
        Thread.Sleep(TimeSpan.FromSeconds(2));
    }

这就是我所做的,它在 IE 11 和 FF 上都有效。

    /// <summary>
    /// Mouse Over on given <see cref="Element"/>
    /// </summary>
    /// <param name="element">element</param>
    /// <returns>Nothing</returns>
    public static void MouseOver(this Element element)
    {
        var jref = element.GetJavascriptElementReference();
        var dom = element.DomContainer;

        var evt = new JSEventCreator(jref, null);
        var evtProp = new NameValueCollection();
        evtProp.Add("windowObject", "window");

        var scriptCode = evt.CreateMouseEventCommand("mouseover", evtProp);
        Logger.LogDebug(scriptCode);
        scriptCode = scriptCode.ToString() + jref + ".dispatchEvent(event);";

        string result = dom.Eval(scriptCode);
        Logger.LogAction(result);
        dom.WaitForComplete();
        Thread.Sleep(TimeSpan.FromSeconds(2));
    }

This is what I did and it works both on IE 11 and FF.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文