आपको execute_async_script() विधि (Java में जावास्क्रिप्टExecutor.executeAsyncScript, IJavaScriptExecutor.ExecuteAsyncScript() .NET में देखना चाहिए, जो आपको कॉलबैक फ़ंक्शन की प्रतीक्षा करने की अनुमति देता है। कॉलबैक फ़ंक्शन स्वचालित रूप से आपके जावास्क्रिप्ट फ़ंक्शन में arguments
सरणी में जोड़ा जाता है। तो, यह सोचते हैं आप पृष्ठ है कि अपनी इच्छानुसार कोई शर्त जब तक इंतजार कर रहा है पर एक JavaScript फ़ंक्शन पहले से ही है, तो आप निम्नलिखित की तरह कुछ कर सकते हैं (जावा नीचे कोड, C# और पायथन कोड समान होना चाहिए):
String script = "var callback = arguments[arguments.length - 1];"
+ "callback(myJavaScriptFunctionThatWaitsUntilReady());";
driver.manage().timeouts().setScriptTimeout(15, TimeUnit.SECONDS);
((JavascriptExecutor)driver).executeAsyncScript(script);
यह हो सकता है और भी चालाक होना संभव है और कॉलबैक फ़ंक्शन को सीधे उस ईवेंट पर पास करें जो उचित डेटा देता है। आप प्रोजेक्ट JavaDocs में executeAsyncScript() फ़ंक्शन पर अधिक जानकारी प्राप्त कर सकते हैं, और प्रोजेक्ट स्रोत पेड़ में इसके लिए नमूना कोड पा सकते हैं। this file में परीक्षणों में एक एक्सएचआर को पूरा करने का इंतजार करने का एक शानदार उदाहरण है।
यदि यह सॉसलैब्स के उपयोग के लिए उपलब्ध पायथन बाइंडिंग के संस्करण में अभी तक उपलब्ध नहीं है, तो मुझे उम्मीद है कि यह लंबे समय से पहले उपलब्ध होगा। माना जाता है कि, एक अर्थ में, यह आपके परीक्षण मामले से जावास्क्रिप्ट में "वांछित स्थिति के लिए मतदान" को दबा रहा है, लेकिन यह आपके परीक्षण को और अधिक पठनीय बना देगा।
ये महान सुझाव हैं धन्यवाद। –