WatIn的右键单击方法?

时间:2011-03-30 18:55:19

标签: c# watin

我试图右键单击树节点但无法找到该类的Rightclick方法。 Watin是否具有右键单击操作?

由于

3 个答案:

答案 0 :(得分:1)

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

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

如果你正在使用FireFox,那么它就不那么简单了,你可以阅读WatiN开发者友好回应的older question。正如他在其他地方所说,这应该在WatiN内。

使用相同的方法可以在FireFox中拖放。

答案 1 :(得分:1)

你可以尝试:

myElement.FireEvent("oncontextmenu")

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

答案 2 :(得分:0)

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

在我发现事件存在的元素之前,树节点上的

FireEvent("oncontextmenu")对我不起作用。

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

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

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

在大多数复杂的DOM结构中,事件在控件的Init()期间由 JavaScript 代码附加(例如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();
});
}
};