2016-08-17 11 views
5

मुझे वैध फ़ंक्शन बनाने में कोई समस्या है जो वेबपृष्ठ पर कुछ परिभाषित तत्वों को हाइलाइट करेगा। कृपया ध्यान दें, कि मैं शुरुआती कोडिंग कर रहा हूं, और समस्या या तो सरल पर्यावरण सेटअप समस्या हो सकती है, या जावास्क्रिप्ट/सेलेनियम सुविधाओं के प्रमुख ज्ञान की कमी हो सकती है।सेलेनियम-वेबड्राइवर जावास्क्रिप्ट और फ़ायरफ़ॉक्स ब्राउज़र का उपयोग कर तत्व को हाइलाइट करने के लिए कैसे करें

मैं ग्रहण नियॉन में अपनी स्क्रिप्ट तैयार करता हूं। एक पर्यावरण स्थापित करने के लिए मैंने फ़ायरफ़ॉक्स ब्राउज़र पर काम करने में सक्षम होने के लिए node.js और geckodriver स्थापित किया है। मेरी स्क्रिप्ट की शुरुआत है:

var webdriver = require('selenium-webdriver'), 
    By = webdriver.By 

var driver = new webdriver.Builder().forBrowser('firefox').build(); 

मैं driver.get(); का उपयोग करके वेबपृष्ठ को खोलने और उसके बाद मैं बस xPath पूर्व .:

var element = driver.findElement(By.xpath("xPath goes here")); 

का उपयोग करके तत्व स्थान को परिभाषित और अब सवाल शुरू होता है, क्या करना चाहिए मैं इस निर्दिष्ट तत्व को पूर्व के लिए हाइलाइट करने के लिए वेबड्राइवर बनाने के लिए करता हूं। लाल सीमा? ढेर और दूसरे समान पृष्ठों को ब्राउज़ करते समय, केवल जवाब मैंने पाया, जावा वाक्य रचना में जावास्क्रिप्ट निर्वाहक का उपयोग कर के बारे में कुछ, या कुछ webdriver कार्यों

element.style.backgroundColor = 'red' 

लेकिन मैं कंसोल त्रुटि मिलती है का उपयोग कर रहा था कि style या के किसी अन्य भाग वाक्यविन्यास एक समारोह नहीं है। इस बिंदु पर, मैं समाधान से बाहर हूं कि यह कैसे किया जाए, और मुझे धीरे-धीरे संदेह है कि मैं HTML5/जावा के बारे में ज्ञान के बिना इस कार्य को पूरा करने में सक्षम हूं। शायद किसी ने कभी ऐसी कठिनाई का सामना किया है और सुराग साझा करेंगे?

https://jsfiddle.net/osav574j/ < - मैंने अपनी स्क्रिप्ट का सरल संस्करण तैयार किया है जो आपको एक पूर्ण संकेत दे सकता है कि मेरा पूरा कोड कैसा दिखता है। हाइलाइट हिस्सा शायद गलत है, यह आपको दिखाने के लिए है, मैंने सोचा कि यह कैसे किया जा सकता है, लेकिन यह शुद्ध धारणा है।

चीयर्स! परकेले

उत्तर

2

आप नीचे के रूप में executeScript() का उपयोग कर प्रयास करना चाहिए: -

var element = driver.findElement(By.xpath("xPath goes here")); 
driver.executeScrip‌t("arguments[0].style.backgroundColor = 'red'", element); 
+2

पूरी तरह से काम करता है! driver.executeScript(); वह चीज थी जिसे मैं ढूंढ रहा था। धन्यवाद सौरभ! – Perkele

0

यह तत्व को हाइलाइट करने के लिए जावास्क्रिप्ट कोड है। सेलेनियम एक कोड इस के समान उपयोग कर रहा है किसी भी देशी विधि इसलिए एक ही रास्ता बाहर उजागर करने के लिए नहीं है:

JavascriptExecutor js=(JavascriptExecutor)driver; 
js.executeScript("arguments[0].setAttribute('style,'border: solid 2px red'')", username); 

यहाँ उपयोगकर्ता नाम webelement का नाम है।

+0

जब मैं इस तरह के समाधान (या किसी भी इसी तरह की) मैं त्रुटि मिलती है "सिंटैक्स त्रुटि: अनपेक्षित पहचानकर्ता" को लागू करने की कोशिश है जो संबंधित है "जे एस"। हो सकता है कि मुझे कुछ पुस्तकालयों की कमी हो या जावास्क्रिप्ट एक्स्सेलर का उपयोग करने से पहले मैंने अपनी स्क्रिप्ट में कुछ महत्वपूर्ण चीज़ों को कॉल करना याद किया है? – Perkele

+1

जावास्क्रिप्टएक्सएटर इस पैकेज से संबंधित है - org.openqa.selenium आप किस भाषा से सेलेनियम का उपयोग कर रहे हैं? –

+0

मैं जावास्क्रिप्ट में लिख रहा हूं, और ग्रहण नियॉन (जावास्क्रिप्ट के लिए निर्माण) का उपयोग कर रहा हूं। मैंने पाया है कि जावा के लिए org.openqa.selenium को कॉल करना आवश्यक है, लेकिन जावास्क्रिप्ट में मुझे बस इतना करना था कि 'var webdriver = requ (' सेलेनियम-वेबड्राइवर ') के साथ अपना ऐप कोड खोलना था और फिर बस कॉल करें 'Driver.executeScript() के साथ जावास्क्रिप्ट एक्स्सेलर;' 'सौरभ गौर ने सुझाव दिया है। – Perkele

संबंधित मुद्दे

 संबंधित मुद्दे