2010-02-10 4 views
1

В приложении, которое я тестирую, присутствуют некоторые кнопки и меню, требующие фактических кликов для отправки всей информации, а нажатие стиля FireEvent, похоже, не режет. И TestPartner, и QTP могут использовать фактические клики. TestPartner делает это всегда (медленно) и QTP делает это путем изменения «ReplayType» до 2 с 1Имеет ли Selenium или WatiN свойство, подобное настройке QTP. WebPackage («ReplayType») = 2?

Setting.WebPackage("ReplayType") = 2 

Так что мой вопрос. В любом случае, чтобы получить реальные клики в WatiN или Selenium? Я не смог найти этот вариант.

Спасибо, Джош

ответ

3

Selenium 2 может запускать реальные клики вместо того, чтобы пытаться синтезировать клики и нажатия клавиш, например, Selenium 1. Он очень много взаимодействует с ОС, чтобы делать эти вещи изначально, из-за чего возникает много проблем Selenium 1, таких как стрельба по щелчку мыши или мыши или mousedown?

Selenium 2 находится в 2-й альфа-фазе и на данный момент довольно стабилен. Вы можете получить Selenium 2.0a2 от http://code.google.com/p/selenium/downloads/list.

Я работаю над привязками .NET и очень доволен тем, как они идут.

+0

Selenium 2 действительно выглядит хорошим решением. Я должен буду сделать снимок. Спасибо AutomatedTester. –

+0

У меня есть несколько обучающих программ на моем сайте http://www.theautomatedtester.co.uk/selenium_training.htm, если вы хотите посмотреть – AutomatedTester

+0

Selenium 2 приближается к тому, что мне нужно. Просто нужно выяснить, как обойти проблемы hover() с помощью меню мыши. –

1

Когда ReplayType установлен в устройство (2), QTP фактически перемещает мышь и выполняет щелчок (вы можете увидеть движение курсора мыши). Я не очень хорошо знаком с Selenium, но из того, что я знаю, воспроизведение выполняется в чистом JavaScript, поэтому он может запускать DOM-события (как QTP делает в событии ReplayMode), но он не может имитировать real щелчок по пути QTP.

1

С 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.

+0

Спасибо Джеймс Х. Это похоже на то, что это может пригодиться, но найти объект не было проблемой, поскольку это был «настоящий» щелчок, который, казалось, срабатывал в некоторых случаях, когда нормальный «onclick» или «onmousedown/up» не срабатывал. –

+0

Возможно, у меня могло быть больше подробностей в объяснении. Моя идея состояла в том, чтобы найти координаты экрана, чтобы щелкнуть, а затем использовать системную функцию для клика. Что-то вроде SendInput: http://pinvoke.net/default.aspx/user32/SendInput.html. Кое-что более низкий уровень, подобный этому, должен быть проклят близко к симуляции реального щелчка мыши. – JamesH