【问题标题】:Right click method for WatIn?WatIn 的右键单击方法?
【发布时间】:2011-03-30 18:55:19
【问题描述】:

我正在尝试右键单击树节点,但找不到该类的 Rightclick 方法。 Watin 是否具有右键单击操作?

谢谢

【问题讨论】:

    标签: c# watin


    【解决方案1】:

    不,您需要触发一个事件。如果只是 Internet Explorer,那么很容易传递所需的按钮值 2,即

        NameValueCollection eventProperties = new NameValueCollection(); 
        eventProperties.Add("button", "2"); 
        yourElement.FireEvent("onmousedown", eventProperties);
    

    如果您使用的是 FireFox,那么事情就不那么简单了,您可以阅读我的 older question,WatiN 开发人员对此很友好地回复了该邮件。正如他在其他地方指出的那样,这应该在 WatiN 内。

    同样的方法可以让您在 FireFox 中拖放。

    【讨论】:

      【解决方案2】:

      你可以试试:

      myElement.FireEvent("oncontextmenu")
      

      它将触发打开元素上下文菜单的 JavaScript 事件,这通常在您右键单击元素时发生。它在 Internet Explorer 中对我有用,但我还没有在 FireFox 中测试过。

      【讨论】:

        【解决方案3】:

        Jen 就在这里(你应该接受她的回答)。

        在我找到存在事件的元素之前,树节点上的FireEvent("oncontextmenu") 对我也不起作用。

        节点通常是Div 控件,我是这样实现的:

        // Selecting node span first
        myDiv.Spans[0].Click();
        // Firing the event on the Div
        myDiv.FireEvent("oncontextmenu");
        

        树节点(以及所有其他复杂的 DOM 结构)的主要问题是在好的 DOM 元素上触发事件。

        在大多数复杂的 DOM 结构中,事件由 JavaScript 代码在控件的Init() 期间附加(例如,Telerik 就是这样做的)。所以你无法在 HTML 源代码中看到该事件。

        如果找不到事件,则必须使用 Visual Studio 调试 javascript。

        为了理解我在说什么,下面是一个关于如何使用 JavaScript 附加事件的示例:

        TreeView.prototype.OnInit=function(){
        this.AttachAllEvents();
        }
        
        TreeView.prototype.AttachAllEvents=function(){
        var _this=this;
        var _container=document.getElementById(this.Container);
        _container.onfocus=function(e){
        eventDispatcher(_this.ClientID,"focus",e);
        };
        _container.onmouseover=function(e){
        eventDispatcher(_this.ClientID,"mouseover",e);
        };
        _container.onmouseout=function(e){
        eventDispatcher(_this.ClientID,"mouseoout",e);
        };
        _container.oncontextmenu=function(e){
        eventDispatcher(_this.ClientID,"contextmenu",e);
        };
        _container.onclick=function(e){
        eventDispatcher(_this.ClientID,"click",e);
        };
        _container.ondblclick=function(e){
        eventDispatcher(_this.ClientID,"doubleclick",e);
        };
        _container.onkeydown=function(e){
        eventDispatcher(_this.ClientID,"keydown",e);
        };
        if(window.attachEvent){
        window.attachEvent("onunload",function(){
        _this.Dispose();
        });
        }
        };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-21
          • 1970-01-01
          • 2012-11-06
          • 1970-01-01
          • 2011-01-11
          相关资源
          最近更新 更多