내가 기대하는 바를 모르겠지만 조사 할 시간이 있었고 질문에 대한 해결책을 찾았습니다. WatiN을 사용하면 jQuery 이벤트가 발생하기를 기다리고 싶습니다.
목표는 C#으로 작성하는 것입니다 :
Browser.WaitForEvent("#link", "onclick");
난 당신이 버튼을 클릭 할 때 링크에
onclick
이벤트를 트리거 (
http://www.sp4ce.net/debug.html시) 테스트 페이지를 썼다.
은 그 때 나는이 방법이 호출 된 경우입니다 점검하십시오
EventMonitorWatcher
을 사용하는 확장 메서드를
.WaitForEvent
public static void WaitForEvent(this Browser browser, string selector, string eventname)
{
using (EventMonitorWatcher monitor = new EventMonitorWatcher(browser, selector, eventname))
{
int timeWaited = 0;
var maxTimeWait = Settings.WaitForCompleteTimeOut * 1000;
do
{
Thread.Sleep(Settings.SleepTime);
timeWaited += Settings.SleepTime;
}
while (!monitor.IsEventCalled() && timeWaited < maxTimeWait);
}
}
을 썼다. 이벤트를 호출 한 경우, 모니터링 시작
public class EventMonitorWatcher : IDisposable
{
private readonly Browser _browser;
private readonly string _selector;
private readonly string _eventname;
public EventMonitorWatcher(Browser browser, string selector, string eventname)
{
_browser = browser;
_selector = selector;
_eventname = eventname;
_browser.Eval(string.Format("startEventMonitor('{0}', '{1}')", _selector, _eventname));
}
public bool IsEventCalled()
{
string result = _browser.Eval(string.Format(
"isEventCalled('{0}', '{1}')", _selector, _eventname));
return result == "true";
}
public void Dispose()
{
_browser.Eval(string.Format("stopEventMonitor('{0}', '{1}')", _selector, _eventname));
}
}
이 모니터 사용 세 자바 스크립트 (JQuery와 전원) 방법은 모니터링 및 검사를 멈춘다.
startEventMonitor = function(selector, event) {
$(selector).data('eventMonitorResult', false);
var eventMonitorHandler = function() {
$(selector).data('eventMonitorResult', true)
};
$(selector).data('eventMonitorHandler', eventMonitorHandler);
$(selector).bind(event, eventMonitorHandler);
};
stopEventMonitor = function(selector, event) {
$(selector).undbind(event, $(selector).data('eventMonitorHandler'));
$(selector).data('eventMonitorResult', false);
};
isEventCalled = function(selector, event) {
return $(selector).data('eventMonitorResult');
};
브라우저를 실행할 때이 자바 스크립트를 페이지 문자열로 삽입해야합니다.
[Test]
public void Test()
{
using(var browser = new IE("http://www.sp4ce.net/debug.html")
{
browser.Eval(JavaScript);
browser.WaitForEvent("#link", "onclick");
}
}
이 테스트에서 "클릭"버튼을 클릭하면 테스트가 직접 끝나고 브라우저가 닫혀 야합니다.
정확히 무슨 당신이 원하는 무엇입니까? 내 웹 테스트는 각 페이지에 삽입 된 jQuery 코드를 사용했으며이 코드는 CSS 선택기와 waitForAjaxComplete (jQuery 측에서 .AjaxStart 및 .AjaxStart에 대한 바인딩을 사용함)에 대한 두 가지 방법으로 Watin 브라우저의 확장을 허용합니다. 내가 너를 도울 수 있다고 확신한다. 그럼 WatiN 측에서하고 싶은 것을 보여주는 예가 있습니까? –
jQuery에서 jquery 유효성 검사 프레임 워크를 확장하고 서버 측 수신 대기 할 이벤트가 두 개 있습니다 .... 폼의 "validation.success"이벤트가 발생하면 waitfor 서버 측 작업을 수행하려고합니다. 그 이벤트를 청취하고 파일을 열 때 "validation.failure"등등과 같은 결과를 검사하십시오 ... 그러면 브라우저 관점에서 유효성 검사 결과를 테스트 할 수 있습니다. 또 다른 예는 특정 적응 형 결과를 HTML이 아닌 JSON으로 되돌려 놓는 것입니다. – Tracker1
위의 예는 ... 예를 들어, 브라우저가 열려 있고 테스트 할 수있는 Assert ... 문을 사용하여 이벤트를 기다리는 동안 약간의 관계를 갖고 싶습니다. jQuery 기반 이벤트 수신. – Tracker1