Метод правого клика для WatIn? - PullRequest
2 голосов
/ 30 марта 2011

Я пытаюсь щелкнуть правой кнопкой мыши узел дерева, но не могу найти метод Rightclick этого класса.У Watin есть правый щелчок?

Спасибо

Ответы [ 3 ]

1 голос
/ 27 июля 2011

Вы можете попробовать:

myElement.FireEvent("oncontextmenu")

Будет запущено событие JavaScript, которое откроет контекстное меню элементов, что обычно происходит, когда вы щелкаете правой кнопкой мыши по элементу. Это работает для меня в Internet Explorer, но я не проверял его в FireFox.

1 голос
/ 31 марта 2011

Нет, вам нужно запустить событие. Если это просто Internet Explorer, то легко передать требуемое значение кнопки 2, т.е.

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

Если вы работаете с FireFox, тогда это не так просто, вы можете прочитать мой старый вопрос , на который любезно ответил разработчик WatiN. Как он отмечает в другом месте, это должно быть в пределах WatiN.

Тот же подход позволит вам перетаскивать в FireFox.

0 голосов
/ 30 июля 2013

Джен прямо здесь (вы должны принять ее ответ).

FireEvent("oncontextmenu") на узле дерева у меня тоже не работало, пока я не нашел элемент, где присутствовало событие.

Узлы обычно являются Div элементами управления, и я достигаю этого следующим образом:

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

Основная проблема Tree Nodes (и всех других сложных DOMструктура) - запускать события на хорошем элементе DOM.

В большинстве сложных DOM-структур к событиям прикрепляется код JavaScript во время Init() элементов управления (например, Telerik делает это).Таким образом, вы не можете видеть событие в исходном коде HTML.

Если вы не можете найти события, вам придется отлаживать свой javascript, используя, например, Visual Studio .

Чтобы понять, о чем я говорю, вот пример того, как события могут быть связаны с 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();
});
}
};
...