我试图右键单击树节点但无法找到该类的Rightclick方法。 Watin是否具有右键单击操作?
由于
答案 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();
});
}
};