दिलचस्प पोस्ट
एएसपी.नेट "विशेष" टैग UnsupportedClassVersionError का कारण क्या है? PL / pgSQL में '$$' के लिए क्या उपयोग किया जाता है आईबीओटलेट और आईबीएसीएशन कन्स्ट्रक्टर में या घोषणा पर वर्ग के क्षेत्रों को प्रारंभ करें? ट्रेविस सीआई विफल रहा क्योंकि लाइसेंस प्रतिबंधित लेआउट को स्वीकार नहीं किया जा सकता है सी #: कैसे – एकल आवृत्ति अनुप्रयोग है कि नए पैरामीटर स्वीकार करता है? क्लिपबोर्ड इवेंट सी # महीने के लिए मैं अपनी साइट में लॉग इन उपयोगकर्ता कैसे रखूं? प्रायोगिक :: फाइलसिस्टम लिंकर त्रुटि विशिष्ट प्रकार का सदस्य 'तिथि' LINQ में इकाईयों में समर्थित नहीं है। केवल प्रारंभिक, संस्था के सदस्य, और इकाई नेविगेशन गुण उपयोग करने के लिए तार (संभावित रूप से बड़ी) बहुआयामी arrays रूट यूआरएल के लिए मैच और स्थिर संसाधनों की सेवा नल मॉडल के साथ प्रस्तुत करना गलत प्रकार से पारित हो जाता है चुंबकीय क्षेत्र एक्स, वाई, जीड वैल्यू को डिवाइस से वैश्विक संदर्भ फ्रेम में कनवर्ट करें

सेलेनियम वेबड्रायवर को तत्व पर क्लिक करने के लिए मजबूर कैसे करें, जो वर्तमान में दिखाई नहीं दे रहा है?

मैं फ़ायरफ़ॉक्सड्राइवर के साथ सेलेनियम 2 जावा एपीआई का उपयोग कर रहा हूं जब मैं कोई फॉर्म भरता हूं, तो फॉर्म इनपूट के आधार पर चेकबॉक्स पृष्ठ पर जोड़े जाते हैं।

मैं सेलेनियम का उपयोग करके उन चेकबॉक्स पर एक क्लिक अनुकरण करना चाहता हूं। तत्व एक नियमित ब्राउज़र में दृश्यमान और प्रयोग करने योग्य है, लेकिन सेलेनियम ने दावा किया है कि तत्व दृश्यमान नहीं हैं।

"Element is not currently visible and so may not be interacted with" 

क्या मैं सेलेनियम को तत्वों की गैर-दृश्य स्थिति को नजरअंदाज करने के लिए मजबूर कर सकता हूं? मैं सेलेनियम को गैर-दृश्यमान तत्व के साथ कैसे बातचीत कर सकता हूं?

Solutions Collecting From Web of "सेलेनियम वेबड्रायवर को तत्व पर क्लिक करने के लिए मजबूर कैसे करें, जो वर्तमान में दिखाई नहीं दे रहा है?"

सेलेनियम निर्धारित करता है कि एक तत्व निम्न मानदंडों द्वारा दिखाई दे रहा है या नहीं (यह निर्धारित करने के लिए कि क्या सीएसएस आपके तत्व पर लागू होता है, यह सुनिश्चित करें कि आप गणना की गई शैली को देखते हैं) एक DOM निरीक्षक का उपयोग करें:

  • दृश्यता! = छिपा हुआ
  • प्रदर्शन! = कोई भी (प्रत्येक मूल तत्व के खिलाफ भी जांच की जाती है)
  • अस्पष्टता! = 0 (यह एक तत्व पर क्लिक करने के लिए जाँच नहीं है)
  • ऊंचाई और चौड़ाई दोनों> 0 हैं
  • एक इनपुट के लिए, विशेषता प्रकार! = छिपा हुआ

आपका तत्व उन मानदंडों में से एक से मेल खाता है। यदि आपके पास तत्व की स्टाइल को बदलने की क्षमता नहीं है, तो यहां यह है कि आप जावास्क्रिप्ट के साथ इसे जबरन कर सकते हैं (जब से आप सेलेनियम 2 एपीआई ने कहा है):

 ((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", inputElement); 

लेकिन यह एक जावास्क्रिप्ट ईवेंट को नहीं करेगा, अगर आप उस इनपुट के लिए बदलाव की घटना पर निर्भर करते हैं तो आपको इसे भी आग लगाना होगा (ऐसा करने के कई तरीके, जो जावास्क्रिप्ट लाइब्रेरी का उपयोग करने के लिए सबसे आसान है उस पृष्ठ पर लोड किया गया है)।

दृश्यता जांच के लिए स्रोत –

https://github.com/SeleniumHQ/selenium/blob/master/javascript/atoms/dom.js#L577

WebDriver का अनुमान है जो यह परिभाषित करता है –

https://dvcs.w3.org/hg/webdriver/raw-file/tip/webdriver-spec.html#widl-WebElement-isDisplayed-boolean

कभी-कभी इसका मतलब है कि ऐसे पृष्ठ पर कई तत्व हैं जिनके पास उसी संपत्ति है जिसे आप खोजना चाहते हैं और आप "गलत से बात कर रहे हैं"

यदि आपके तत्व को विशिष्ट रूप से: आईडी या: नाम (या: वर्ग) द्वारा पहचाना नहीं जा सकता है, तो यह मुश्किल हो सकता है।

कभी-कभी तत्व के लिए खोज: xpath मदद करेगा और कुछ मामलों में भी यह व्यावहारिक नहीं है।

उन मामलों में, आपको अपने मानदंड से मेल खाने वाले सभी तत्वों को प्राप्त करना पड़ सकता है और सूचकांक द्वारा सही एक का संदर्भ दे सकता है। यह गंदा है, लेकिन यह काम करता है

मैं Rails ऐप पर रूबी से सेलेनियम / वॉटर का उपयोग कर रहा हूं, इसलिए मेरे मामले में उदाहरण होगा:

 browser = Watir::Browser.new(:firefox, :profile => "default") browser.goto("http://www.google.com/analytics") # login browser.divs(:text, "+ New Property").last.click 

उम्मीद है की यह मदद करेगा।

मेरे पास एक समान समस्या थी, लेकिन यह व्यूपोर्ट में दिखाई नहीं दे रहा तत्व से संबंधित था। मैंने एक स्क्रीनशॉट लिया और एहसास हुआ कि ब्राउज़र विंडो बहुत संकीर्ण थी और तत्व नहीं देखा जा सका। मैंने इनमें से एक किया और यह काम किया:

 driver.maximize_window() 

देखें: WebDriver.maximize_window ()

ऐसा भी एक और मामला है जब दृश्यमान तत्व को दृश्यमान नहीं माना जाएगा:

  • जब तत्व सीएसएस परिवर्तित होता है
  • जब तत्व के मूल तत्व सीएसएस परिवर्तित हो जाते हैं

यह जांचने के लिए कि क्या आप तत्वों के साथ इंटरैक्ट करने के लिए नहीं चाहते हैं, सीएसएस परिवर्तित है, क्रोम पर ऐसा करें:

  1. खुला निरीक्षक
  2. रोचक तत्व ढूंढें (या उसके मूल तत्व की संभावना, अनुमानतः div तत्व)
  3. 'गणना' टैब का चयन करें
  4. अगर कोई पैरामीटर है: वेबकिट-ट्रांसमैक्स: मैट्रिक्स (…) इसका अर्थ है कि सीएसएस परिवर्तित हो गया है, और सेलेनियम 2 द्वारा एक दृश्यमान तत्व के रूप में पहचाना नहीं जा सकता है

अदृश्यता समय के कारण भी हो सकती है जब तत्व को धीरे-धीरे दिखाई देना चाहिए। ब्राउज़र को थोड़ा इंतजार करने के लिए मजबूर करना उस मामले में मदद कर सकता है।

देखें, उदाहरण के लिए, एक तत्व मौजूद होने तक वेबड्रायवर की प्रतीक्षा करने पर प्रश्न।

या आप सेलेनियम एक्शन क्लास का इस्तेमाल उपयोगकर्ता इंटरैक्शन अनुकरण के लिए कर सकते हैं – उदाहरण के लिए

  WebDriver = new FirefoxDriver(); WebElement menu = driver.findElement(By.xpath("")); // the triger event element Actions build = new Actions(driver); // heare you state ActionBuider build.moveToElement(menu).build().perform(); // Here you perform hover mouse over the needed elemnt to triger the visibility of the hidden WebElement m2m= driver.findElement(By.xpath(""));//the previous non visible element m2m.click(); 

मुझे इंटरनेट एक्सप्लोरर 9 में सेलेनियम 2 के साथ एक ही समस्या थी, लेकिन मेरा फिक्स वास्तव में अजीब है मैं अपने फॉर्म के अंदर इनपुट पर क्लिक करने में सक्षम नहीं था -> सेलेनियम दोहराता है, वे दिखाई नहीं दे रहे हैं।

यह तब हुआ जब मेरे स्वरूप में छाया -> http://www.paulund.co.uk/creating-different-css3-box-shadows-effects : कंक्रीट में "प्रभाव संख्या 2"

मुझे पता नहीं, यह छद्म तत्व समाधान के सेलेनियम के बंद होने के कारण और क्यों नहीं, लेकिन यह मेरे लिए काम करता है

मैं रॉयर परियोजना में कैसरबाड़ा का उपयोग करते हुए इस त्रुटि को हल करता हूं:

 Capybara.ignore_elements = true 

features/support/env.rb के लिए

आप एक्सेस करने / बदलने वाले तत्व को बल नहीं दे सकते, जिसके लिए उपयोगकर्ता सामान्य रूप से एक्सेस नहीं करता है, क्योंकि सेलेनियम को उपयोगकर्ता इंटरैक्शन की नकल करने के लिए डिज़ाइन किया गया है।

अगर यह त्रुटि होती है, तो जांच लें कि:

  • तत्व आपके व्यूपोर्ट में दिखाई दे रहा है, वर्तमान विंडो को अधिकतम करने का प्रयास करें जो वेबड्राइवर का उपयोग कर रहा है (उदाहरण के maximize() , node.js में , maximize_window() पायथन में),
  • आपका तत्व दो बार नहीं दिख रहा है (एक ही चयनकर्ता के तहत), और आप गलत चयन कर रहे हैं,
  • यदि आपका तत्व छिपा हुआ है, तो इसे दृश्यमान बनाने पर विचार करें,
  • यदि आप सीमा के बावजूद छुपा तत्व का उपयोग / परिवर्तन मान चाहते हैं, तो उस के लिए जावास्क्रिप्ट का उपयोग करें (उदाहरण के लिए, execute_script() node.js में , execute_script() पायथन में)।

मैं सिर्फ तत्व प्रदर्शन संपत्ति प्रतीक्षा करके इस त्रुटि को हल करता हूँ

 waitFor() { element.displayed } 

स्वीकृत जवाब मेरे लिए काम किया नीचे सेलेनियम को लगता है कि यह दृश्यमान नहीं है कि माता पिता तत्व को खोजने के लिए कुछ कोड है

 function getStyles(element){ computedStyle = window.getComputedStyle(element); if(computedStyle.opacity === 0 || computedStyle.display === "none" || computedStyle.visibility === "hidden" || (computedStyle.height < 0 && computedStyle.height < 0) || element.type === "hidden") { console.log("Found an element that Selenium will consider to not be visible") console.log(element); console.log("opacity: " + computedStyle.opacity); console.log("display: " + computedStyle.display); console.log("visibility: " + computedStyle.visibility); console.log("height: " + computedStyle.height); console.log("width: " + computedStyle.width); } if(element.parentElement){ getStyles(element.parentElement); } } getStyles(document.getElementById('REPLACE WITH THE ID OF THE ELEMENT YOU THINK IS VISIBLE BUT SELENIUM CAN NOT FIND'));