2015-03-02 3 views
12

मैं एओएल मेल के साथ हमारे एक्सटेंशन का परीक्षण करने के लिए सेलेनियम परीक्षण बनाना चाहता हूं। मैं एओएल में लॉगिन करने और एक ईमेल लिखने में कामयाब रहा, लेकिन मुझे संपादक के अंदर तत्वों का चयन करने की भी आवश्यकता है, जो एक आईफ्रेम के अंदर है। मैं जाँच की और यहां तक ​​कि जब संपादक खुला है निम्नलिखित परीक्षण विफल रहता है:मैं एक्सपैथ के साथ आईफ्रेम के अंदर तत्वों का चयन कैसे करूं?

self.assertEqual(first=1, second=len(self.driver.find_elements_by_xpath(xpath="//iframe[@name='editor_body']//body[@contenteditable='true']"))) 

मैं त्रुटि AssertionError: 1 != 0 मिलता है। मैं एक्सपैथ (या सेलेनियम के साथ किसी भी अन्य तरीके से) iframe और अन्य तत्वों का शरीर कैसे चुनूं?

+1

क्या आपने '.switch_to() फ्रेम (तत्व) 'का उपयोग करने का प्रयास किया है? –

+0

@MarkRowlands धन्यवाद, यह काम करता है! लेकिन 'self.driver.switch_to.frame (frame_reference = self.driver.find_element_by_xpath (xpath = "// iframe [@ name =' editor_body ']") के साथ) ' – Uri

उत्तर

15

आप उन्हें स्विच करने तक के माध्यम से पार नहीं कर सकते हैं। आपका xPath,

//iframe[@name='editor_body']//body[@contenteditable='true'] 

काम नहीं करेगा क्योंकि <body> टैग एक iFrame है, जो वर्तमान संदर्भ में नहीं है के भीतर है। आपको पहले इसे स्विच करने की आवश्यकता है:

driver.switch_to.frame('editor_body')... 
+2

धन्यवाद, यह काम करता है! मैंने इसे 'self.driver.switch_to.frame (frame_reference = self.driver.find_element_by_xpath (x path = "// iframe [@ name =' editor_body ']") के साथ किया है) ' – Uri

+0

मैं सेलेनियम नोड के साथ ऐसा कैसे करूं ? –

+0

चाहे आप स्थानीय रूप से चल रहे हों, या नोड का उपयोग कर रहे हों - नतीजा वही है। – sircapsalot

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