2015-03-02 16 views
12

Voglio creare un test di selenio per testare le nostre estensioni con posta AOL. Sono riuscito ad accedere ad AOL e comporre un'email, ma ho anche bisogno di selezionare gli elementi all'interno dell'editor, che si trova all'interno di un iframe. Ho controllato e anche quando l'editor è aperto il seguente test fallisce:Come seleziono gli elementi all'interno di un iframe con Xpath?

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

ottengo l'errore AssertionError: 1 != 0. Come seleziono il corpo dell'iframe e altri elementi da Xpath (o in qualsiasi altro modo con selenio)?

+1

Hai provato a usare '.switch_to(). frame (elemento)'? –

+0

@MarkRowlands Grazie, funziona! Ma con 'self.driver.switch_to.frame (frame_reference = self.driver.find_element_by_xpath (xpath =" // iframe [@ name = 'editor_body'] "))' – Uri

risposta

15

Non è possibile attraversare gli fino a quando non si passa a questi. Il tuo xPath,

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

non funziona perché il tag <body> è all'interno di un iFrame, che non è nel contesto attuale. per prima cosa devi passare a:

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

Grazie, funziona! L'ho fatto con 'self.driver.switch_to.frame (frame_reference = self.driver.find_element_by_xpath (x path =" // iframe [@ name = 'editor_body'] "))' – Uri

+0

come farei con il nodo di selenio ? –

+0

indipendentemente dal fatto che si stia eseguendo localmente o utilizzando un nodo: il risultato è lo stesso. – sircapsalot

Problemi correlati