मैं एक पुस्तकालय विकसित कर रहा हूं जो कुछ कस्टम आदेशों के साथ सेलेनियम 2 को बढ़ाता है। पुस्तकालय सेलेनियम के जावा और पायथन बाइंडिंग के साथ-साथ सेलेनियम आईडीई में प्रयोग योग्य होना चाहिए। मेरे research से, इन तीन लक्षित बाइंडिंग में सेलेनियम 2 स्क्रिप्ट्स का कम से कम 80% शामिल होना चाहिए।सेलेनियम वेबड्राइवर: मैं किस हद तक जावास्क्रिप्ट पर भरोसा कर सकता हूं?
सेलेनियम आईडीई के लिए मेरे कस्टम आदेशों को लागू करने के लिए, मुझे लगता है कि मुझे जावास्क्रिप्ट में इसके लिए एक प्लगइन लिखना होगा।
मेरा प्रश्न यह है: यदि मेरे पास पहले से ही जावास्क्रिप्ट में मेरे कस्टम कमांड का कार्यान्वयन है, तो क्या यह जावा लाइब्रेरी और पाइथन बाइंडिंग के लिए इस क्रियान्वयन का पुन: उपयोग करना सुरक्षित है?
मैं ऐसे दृष्टिकोण के बारे में सोच रहा हूं जो WebDriver#executeScript
के माध्यम से मेरे आदेशों के जावास्क्रिप्ट कार्यान्वयन को इंजेक्ट करता है। मैं जो सोच रहा हूं उसका एक स्यूडोकोड कार्यान्वयन यहां है।
जावा में:
public void fooJava() {
executeScript("Inject code.js");
executeScript("fooJavaScript();");
}
code.js
में:
function fooJavaScript() {
// Implementation of command "foo" from Selenium IDE plugin.
}
तो, जावा में अपने कस्टम आदेश fooJava()
निष्पादित करने के लिए, मेरी लाइब्रेरी के code.js
executeScript
के माध्यम से ब्राउज़र में इंजेक्ट किया जाएगा। कहें, इसमें जावास्क्रिप्टfoo
का कार्यान्वयन होगा। अगले executeScript
कॉल में, यह fooJavaScript
तब कॉल किया जाएगा।
इस दृष्टिकोण मुझे मेरी कस्टम लागू करने के लिए होने से रोका जा सके जबकि आदेश में तीन बार (जावा, अजगर, सेलेनियम आईडीई), मैं कुछ चिंताएं हैं:
- जब मैं इंजेक्षन मेरी
code.js
, खतरे में मैं कर रहा हूँ वेबसाइट की वैश्विक स्थिति को नष्ट करने के लिए? - मैं किस हद तक जावास्क्रिप्ट पर भरोसा कर सकता हूं? यदि कोई चेतावनी संवाद मौजूद है तो क्या यह काम करेगा? अभ्यास में, सेलेनियम के साथ उपयोग किए जाने वाले कितने ड्राइवर समर्थन जावास्क्रिप्ट नहीं करते हैं? उदाहरण के लिए।
HtmlUnit
? - क्या यह सभी प्रमुख ब्राउज़रों (आईई, क्रोम, फ़ायरफ़ॉक्स, सफारी के कुछ हाल के संस्करण) में काम करेगा?
इसके साथ आपके वास्तविक जीवन के अनुभवों की बहुत सराहना की जाएगी।
मेरे "वास्तविक जीवन अनुभव" से .. मैंने परीक्षण करते समय जावास्क्रिप्ट का उपयोग करने के लिए _rarely_ की आवश्यकता है। मेरी राय में, यदि आप कुछ जावास्क्रिप्ट ईवेंट को स्पार्क करने की ज़रूरत है तो यह खराब ऐप डिज़ाइन है। यह आमतौर पर यूआई से दूर करने के लिए सिर्फ खराब डिजाइन है .. मेरा मतलब है, यही वह है जो आप परीक्षण कर रहे हैं, है ना? – sircapsalot