मुझे नहीं पता कि आप क्या उम्मीद करते हैं, लेकिन मेरे पास जांच करने के लिए कुछ समय था और मैं प्रश्न के समाधान के साथ आया: WatiN के साथ, मैं एक jQuery घटना के लिए इंतजार करना चाहता हूं।
लक्ष्य सी # में लिखने के लिए:
Browser.WaitForEvent("#link", "onclick");
मैं एक परीक्षण पृष्ठ (http://www.sp4ce.net/debug.html पर उपलब्ध है) जहां यह लिंक पर एक onclick
ईवेंट ट्रिगर करता है जब आप बटन पर क्लिक करें लिखा था।
तब मैंने लिखा विस्तार विधि .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);
}
}
यह तरीकों एक EventMonitorWatcher
कि जाँच घटना बुलाया गया है है का उपयोग करता है।
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 कोड का उपयोग किया जो प्रत्येक पृष्ठ पर इंजेक्शन दिया जाता है, यह कोड वाटिन ब्राउज़र के एक्सटेंशन को दो विधियों के साथ अनुमति देता है, एक सीएसएस चयनकर्ता के लिए और दूसरा प्रतीक्षा करने के लिएForAjaxComplete (जो कुछ बाध्यकारी उपयोग करता है। AJAXStart और jQuery पक्ष पर AJAXStart)। मुझे यकीन है कि मैं आपकी मदद कर सकता हूं। तो क्या आपके पास वाटीएन पक्ष पर क्या करना है इसका एक उदाहरण है? JQuery में –
, मैंने jquery सत्यापन फ्रेमवर्क बढ़ाया है, और कुछ घटनाएं हैं जो मैं सर्वर-साइड को सुनना चाहता हूं .... जब किसी प्रपत्र की "validation.success" ईवेंट आग लगती है, तो मैं एक प्रतीक्षा सर्वर सर्वर की तरफ करना चाहता हूं जो उस घटना के लिए सुनता है, और जब यह फ़ाइल करता है, तो परिणामों का निरीक्षण करें ... "validation.failure" आदि के लिए ... यह मुझे ब्राउज़र परिप्रेक्ष्य से सत्यापन परिणामों का परीक्षण करने की अनुमति देगा। एक और उदाहरण है कि कुछ अनुकूली परिणाम जेएसओएन के रूप में वापस आ जाएंगे, HTML नहीं। – Tracker1
उपर्युक्त एक उदाहरण है ... संक्षेप में, ब्राउज़र खोलने के दौरान, कुछ घटनाएं इंतजार कर रही हैं, घटनाओं की प्रतीक्षा कर रहे हैं ... कथन जिनके खिलाफ परीक्षण किया जा सकता है। JQuery आधारित घटनाओं के लिए सुनना। – Tracker1