जावा स्क्रिप्ट कोड आप सेलेनियम के माध्यम से निष्पादित करने के लिए चर पारित करने के लिए सामान्य तरीके से सिर्फ execute_script
को चर पारित करने के लिए है:
foo = "something"
driver.execute_script("""
var foo = arguments[0];
document.getElementById('text_field').value += foo;
""", foo)
आप arguments
object के माध्यम से जावास्क्रिप्ट तरफ तर्क पुनः प्राप्त।
function() {
var foo = arguments[0];
document.getElementById('text_field').value += foo;
}
और समारोह तर्क execute_script
को पारित किए गए के साथ कहा जाता है: आप तो क्या निष्पादित किया जाता है की तरह कुछ है, क्योंकि कोड आप execute_script
के पास एक समारोह में लपेटा जाता है यह कर सकते हैं। तर्क सेलेनियम द्वारा स्वचालित रूप से क्रमबद्ध किया जाता है।
.format
या समेकित तारों के साथ इंटरपोलिंग करने के लिए नाजुक तरीके हैं। उदाहरण के लिए यदि आप 'var foo = "' + foo + '"'
करते हैं तो यह आपके foo
वैरिएबल में डबल कोट होगा ('var foo = "{0}"'.format(foo)
के साथ)। का उपयोग करते हुए json.dumps
इससे बचने के लिए जा रहा है और ज्यादातर मामलों में काम करेगा लेकिन यह कुछ इस तरह की देखभाल नहीं करता है:
el = driver.find_element(".something")
// Do stuff with el on the Python side.
driver.execute_script("""
var el = arguments[0];
// Do something with el on the JavaScript side.
""")
सेलेनियम जानता है कि कैसे कन्वर्ट करने के लिए अजगर आपत्ति यह आप देता है जब आप एक डोम के लिए एक वस्तु को खोजने जावास्क्रिप्ट पक्ष पर वस्तु। json.dumps
ऐसा नहीं करता है।
संपादन के लिए धन्यवाद @ जोसेफ – Saifur