दिलचस्प पोस्ट
साक्षात्कार: क्या हम अमूर्त वर्ग को इन्स्तांत कर सकते हैं? किसी सूची में सभी तत्वों को कैसे प्राप्त करें? एंड्रॉइड में टेक्स्ट की लंबाई को सीमित करें <Section> और <div> के बीच अंतर क्या है? Tools.jar को ढूँढने में असमर्थ ऐप के भीतर ही लोगों को बदलना Android अंतहीन सूची मैं एसक्यूएल प्लस से चलने वाली SQL स्क्रिप्ट में एम्पर्सैंड को कैसे अनदेखा कर सकता हूं? एंड्रॉइड – पैकेज नाम सम्मेलन संग्रह <टी> बनाम सूची <टी> आप अपने इंटरफेस पर क्या उपयोग करना चाहिए? दो-आयामी सरणी बनाने के लिए सिंटैक्स AngularJS में एकाधिक विशिष्ट मॉडल गुणों (या संबंध में) द्वारा फ़िल्टरिंग सी में "रजिस्टर" कीवर्ड? चेतावनी: सीएसआरएफ टोकन प्रामाणिकता रेल को सत्यापित नहीं किया जा सकता JQuery के उपयोग से मैं एक DropDownList में विकल्प कैसे जोड़ूं?

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

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

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

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

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"))); 

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