С WatiN можно попасть в «родной» интерфейс элементов в IE-окнах. Используя это, вы можете получить координаты экрана любого элемента.
using mshtml; //Add a reference to Microsoft.mshtml that comes with WatiN.
using WatiN.Core.Native.InternetExplorer;
public static System.Drawing.Point GetScreenPoint(IEElement element)
{
IHTMLElement nativeElement = element.AsHtmlElement;
IHTMLElement2 offsetElement = (IHTMLElement2)nativeElement;
IHTMLRect clientRect = offsetElement.getBoundingClientRect();
IHTMLDocument2 doc = (IHTMLDocument2)nativeElement.document;
IHTMLWindow3 window = (IHTMLWindow3)doc.parentWindow;
int windowLeft = window.screenLeft;
int windowTop = window.screenTop;
int elementLeft = clientRect.left;
int elementTop = clientRect.top;
int width = nativeElement.offsetWidth;
int height = nativeElement.offsetHeight;
int clickX = windowLeft + elementLeft + (width/2);
int clickY = windowTop + elementTop + (height/2);
return new System.Drawing.Point(clickX, clickY);
}
Чтобы использовать его:
Button myButton = browser.Button(Find.ById("myButton"));
System.Drawing.Point clickPoint = GetScreenPoint((IEElement)myButton.NativeElement);
MyClick(clickPoint);
Очевидно, что элемент должен быть виден. Я не знаю, как это проверить, но я думаю, вы можете изменить атрибуты scrollTop и scrollLeft для прокрутки.
Вам также понадобится метод, чтобы на самом деле сделать клик, но, вероятно, для этого уже есть ответ на stackoverflow.
Selenium 2 действительно выглядит хорошим решением. Я должен буду сделать снимок. Спасибо AutomatedTester. –
У меня есть несколько обучающих программ на моем сайте http://www.theautomatedtester.co.uk/selenium_training.htm, если вы хотите посмотреть – AutomatedTester
Selenium 2 приближается к тому, что мне нужно. Просто нужно выяснить, как обойти проблемы hover() с помощью меню мыши. –