【发布时间】:2011-03-30 18:55:19
【问题描述】:
我正在尝试右键单击树节点,但找不到该类的 Rightclick 方法。 Watin 是否具有右键单击操作?
谢谢
【问题讨论】:
我正在尝试右键单击树节点,但找不到该类的 Rightclick 方法。 Watin 是否具有右键单击操作?
谢谢
【问题讨论】:
不,您需要触发一个事件。如果只是 Internet Explorer,那么很容易传递所需的按钮值 2,即
NameValueCollection eventProperties = new NameValueCollection();
eventProperties.Add("button", "2");
yourElement.FireEvent("onmousedown", eventProperties);
如果您使用的是 FireFox,那么事情就不那么简单了,您可以阅读我的 older question,WatiN 开发人员对此很友好地回复了该邮件。正如他在其他地方指出的那样,这应该在 WatiN 内。
同样的方法可以让您在 FireFox 中拖放。
【讨论】:
你可以试试:
myElement.FireEvent("oncontextmenu")
它将触发打开元素上下文菜单的 JavaScript 事件,这通常在您右键单击元素时发生。它在 Internet Explorer 中对我有用,但我还没有在 FireFox 中测试过。
【讨论】:
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();
});
}
};
【讨论】: