दिलचस्प पोस्ट
सी # एक स्टैक अतिप्रवाह अपवाद पकड़ो टॉमकेट में संदर्भों के बीच सत्र डेटा साझा करना आईफ़ोन UISlider बार छवि बदलें XSLT / XPath में वर्तमान नोड बनाम संदर्भ नोड? आईसीएस में TYPE_SYSTEM_OVERLAY पायथन में पुरानी शैली और नई शैली वर्गों में क्या अंतर है? कौन से दो पूरक पूर्णांक आपरेशनों को इनपुट में उच्च बिट्स को शून्य किए बिना इस्तेमाल किया जा सकता है, यदि परिणाम का केवल कम हिस्सा ही चाहता है? सी + अनुप्रयोग विंडोज़ में सी + + विंडोज़ डीएलएल कैसे मर्ज कर सकते हैं? गतिशील रूप से बाहरी जावास्क्रिप्ट फ़ाइल लोड करें, और इसे लोड करने के लिए प्रतीक्षा करें – JQuery का उपयोग किए बिना इंटरफ़ेस या अमूर्त वर्ग? SASS का उपयोग करते समय मैं एक अलग निर्देशिका से एक फ़ाइल कैसे आयात कर सकता हूं? जीआईटी रिपॉजिटरी से एक निर्देशिका को कैसे निकालना है? आप स्ट्रिंगस्ट्रीम चर कैसे साफ़ करते हैं? एक फाइल डाउनलोड करना जो कि प्रेतजजेस में पोस्ट अनुरोध अनुरोध में अनुलग्नक के रूप में आता है सी ++ में स्थिर सरणी बनाम गतिशील सरणी

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

मैं वेब ड्रिवर के साथ जावा का उपयोग कर रहा हूं। मुझे दो फ़्रेमों के बीच स्विच करना पड़ता है। मैंने सेलेनियम आईडीई में टेस्ट केस दर्ज किया है और उसमें मुझे 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"))); 

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