दिलचस्प पोस्ट
मैं नोड.जेएस वेब अनुप्रयोग में मोंगोडीबी कनेक्शन कैसे प्रबंधित करूं? जावा – 'यह' कीवर्ड का उपयोग करने के लिए PEM BASE64 एन्कोडेड निजी कुंजी फ़ाइल से आरएसए निजी कुंजी प्राप्त करना नेविगेटर.ऑनलाइन हमेशा काम नहीं करता है कैसे ठीक से एक ArrayList <पार्सीबल> के साथ पार्सलेबल को लागू करने के लिए? प्रोल डीसीजी व्याकरण नियम में ढेर अतिप्रवाह: बड़े सूचियों को कुशलतापूर्वक या आलसी को कैसे संभालना है आकार बदलने के लिए छवि आकार अनुपात की गणना करना एएससी का प्रयोग करते हुए एनएसURL और एविडियो प्लेयर की रिसाव सशक्त API सेवा कैसे जार फ़ाइल में छवियों बंडल करने के लिए मेवेन का उपयोग करके एक मोटी जार का निर्माण जावा, दो तिथियों के बीच के दिनों की संख्या की गणना करें एंड्रॉइड में मैं कई अलार्म कैसे सेटअप कर सकता हूं? वेबकिट सीएसएस एनीमेशन समस्या – एनीमेशन के अंत की स्थिति को कायम करते हैं? AngularJS: एनजी-मॉडल चेकबॉक्स के लिए एनजी-चेक करने के लिए बाध्य नहीं है

जावा का उपयोग कर सेलेनियम वेबड्राइवर में फ्रेम के बीच कैसे स्विच करें

मैं वेब ड्रिवर के साथ जावा का उपयोग कर रहा हूं। मुझे दो फ़्रेमों के बीच स्विच करना पड़ता है। मैंने सेलेनियम आईडीई में टेस्ट केस दर्ज किया है और उसमें मुझे selectFrame relative = top फ़्रेम = मध्यम फ्रेम

लेकिन एक समस्या यह है कि वह रिश्तेदार = शीर्ष और मध्य फ्रेम पहचान नहीं पा रहा है। मैं जावा के साथ सेलेनियम वेबड्रायवर में इस समस्या को कैसे हल कर सकता हूं?

Solutions Collecting From Web of "जावा का उपयोग कर सेलेनियम वेबड्राइवर में फ्रेम के बीच कैसे स्विच करें"

driver.switchTo().frame() के driver.switchTo().frame() विधि तीन संभावित तर्कों में से एक लेता है:

  • एक संख्या।

    अपने (शून्य-आधारित) सूचकांक से एक फ्रेम का चयन करें अर्थात्, अगर किसी पृष्ठ के तीन फ्रेम हैं, तो पहली फ्रेम इंडेक्स 0 पर होगी, दूसरी इंडेक्स 1 और तीसरे सूचकांक 2 । फ़्रेम का चयन करने के बाद, वेबड्राइवर इंटरफ़ेस पर आने वाले प्रत्येक कॉल को उस फ्रेम में बनाया जाता है।

  • एक नाम या आईडी

    अपने नाम या आईडी से एक फ्रेम चुनें नाम विशेषताओं से मेल खाने वाले फ़्रेम्स हमेशा आईडी से मेल खाते के मुकाबले प्राथमिकता देते हैं

  • एक पहले पाया गया WebElement

    अपने पहले स्थित वेबएलेमेंट का उपयोग करके एक फ़्रेम का चयन करें।

इसे आईडी / नाम से फ्रेम प्राप्त करें या driver.findElement() द्वारा उसे driver.findElement() और आप अच्छे होंगे।

एक फ्रेम को स्विच करने के लिए:

 driver.switchTo.frame("Frame_ID"); 

डिफ़ॉल्ट पर फिर से स्विच करने के लिए

 driver.switchTo().defaultContent(); 

सबसे पहले आपको फ्रेम आईडी का पता लगाना होगा और उसे WebElement में परिभाषित करना WebElement

पूर्व के लिए: – WebElement fr = driver.findElementById("id");

फिर इस कोड का उपयोग करके फ़्रेम पर स्विच करें: – driver.switchTo().frame("Frame_ID");

एक उदाहरण स्क्रिप्ट: –

 WebElement fr = driver.findElementById("theIframe"); driver.switchTo().frame(fr); Then to move out of frame use:- driver.switchTo().defaultContent(); 

यह कोड ग्रोवी में है, इसलिए संभव है कि आपको कुछ सुधार करने की आवश्यकता होगी। पहला परम एक यूआरएल है, दूसरा प्रयासों को सीमित करने के लिए एक काउंटर है।

 public boolean selectWindow(window, maxTries) { def handles int tries = 0 while (true) { try { handles = driver.getWindowHandles().toArray() for (int a = handles.size() - 1; a >= 0 ; a--) { // Backwards is faster with FF since it requires two windows try { Log.logger.info("Attempting to select window: " + window) driver.switchTo().window(handles[a]); if (driver.getCurrentUrl().equals(window)) return true; else { Thread.sleep(2000) tries++ } if (tries > maxTries) { Log.logger.warn("Cannot select page") return false } } catch (Exception ex) { Thread.sleep(2000) tries++ } } } catch (Exception ex2) { Thread.sleep(2000) tries++ } } return false; } 

यह सुनिश्चित करने की ज़रूरत है कि एक फ्रेम में स्विच करने के बाद, अन्य फ़्रेमों में webelements तक पहुंचने के लिए डिफ़ॉल्ट सामग्री पर वापस स्विच करना होगा जैसा कि Webdriver वर्तमान फ्रेम के अंदर नई फ़्रेम को खोजने के लिए करते हैं।

 driver.switchTo().defaultContent() 

आप भी उपयोग कर सकते हैं:

 driver.switch_to.frame(0) 

(0) html पर पहले iframe है।

डिफ़ॉल्ट सामग्री पर वापस स्विच करने के लिए:

 driver.switch_to.default_content() 

अपेक्षित स्थितियों के साथ WebDriverWait का उपयोग करने की संभावना भी है (यह सुनिश्चित करने के लिए कि फ़्रेम उपलब्ध होगा)

  1. पैरामीटर के रूप में स्ट्रिंग के साथ

     (new WebDriverWait(driver, 5)).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frame-name")); 
  2. एक पैरामीटर के रूप में लोकेटर के साथ

     (new WebDriverWait(driver, 5)).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("frame-id"))); 

अधिक जानकारी यहां पाई जा सकती है