Getting an empty JavaScript Array in Java (Selenium test) -


मुझे जावा चर में जावास्क्रिप्ट स्क्रिप्ट में घोषित एक रिक्त अरणी प्राप्त करने की आवश्यकता है।

जावास्क्रिप्ट सरणी को एक वेब पेज पर घोषित किया जाता है:

  tc_vars ["products"] = नया अर्रे ();  

(मुझे केवल उत्पादों की सरणी की आवश्यकता है, न कि tc_vars एक)।

यह है मैं जावा में इस चर को कैसे प्राप्त करने की कोशिश करता हूं:

  वस्तु [] मान = (ऑब्जेक्ट []) js.executeScript ("return tc_vars ['products'];");  

(जहां जेएस एक सेलेनियम WebDriver से संबद्ध एक जावास्क्रिप्ट एक्सक्लूसेटर है)।

< P> मुझे आमतौर पर स्ट्रिंग प्राप्त करने के लिए इस पद्धति का उपयोग करने में कोई परेशानी नहीं हुई है, लेकिन ऐसा लगता है कि यह खाली ऐरे के लिए काम नहीं करेगा। इसके अलावा, मेरे पास कोई त्रुटि संदेश नहीं है, वेब ड्रिवर बस क्रैश करता है।

executeScript विधि एक ऑब्जेक्ट चर देता है यह एक स्ट्रिंग (जब जेएस चर एक स्ट्रिंग है) में कास्ट करता है, लेकिन यह खाली ऐरे को स्ट्रिंग [] या ऑब्जेक्ट में कास्ट करने में कोई मौका नहीं था []

जैसा कि मैंने अपनी टिप्पणी में बताया है, आपको यह सुनिश्चित करना होगा कि वास्तव में आप उस बिंदु पर tc_vars ['उत्पाद'] तक पहुंच है, जिसे आप परीक्षण करना चाहते हैं। उदा।, मैन्युअल रूप से एक ब्राउज़र खोलें, उस पृष्ठ में बिंदु पर जाएं जहां आप सेलेनियम का उपयोग करते हुए उस मान के लिए पूछें, खुले devtools javascript कंसोल और tc_vars के मूल्य की जांच करें। यदि यह आपके लिए उपलब्ध नहीं है, तो यह सेलेनियम वेबड्रिवर के लिए उपलब्ध नहीं होगा।

दूसरी बात यह है कि एरे के लिए, सेलेनियम वेबड्रिवर (कम से कम नवीनतम संस्करण: 2.42.2) ArrayList & lt ; ऑब्जेक्ट & gt; और नहीं वस्तु [] । इसलिए आपकी कास्ट होना चाहिए:

  ArrayList & lt; ऑब्जेक्ट & gt; ओ = (अर्रेलिस्ट & लेफ्टिनेंट; ऑब्जेक्ट & gt;) js.executeScript ("वापसी टीसी_विर्स ['उत्पाद'];");  

Comments

Popular posts from this blog

sqlite3 - UPDATE a table from the SELECT of another one -

c# - Showing a SelectedItem's Property -

javascript - Render HTML after each iteration in loop -