2015-03-02 13 views
12

Chcę utworzyć test Selenium, aby przetestować nasze rozszerzenia za pomocą poczty AOL. Udało mi się zalogować do AOL i napisać e-mail, ale muszę też wybrać elementy wewnątrz edytora, który znajduje się wewnątrz elementu iframe. Sprawdziłem i nawet wtedy, gdy edytor jest otwarty następujący test nie powiedzie się:Jak wybrać elementy wewnątrz elementu iframe za pomocą Xpath?

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

pojawia się błąd AssertionError: 1 != 0. Jak wybrać treść elementu iframe i innych elementów za pomocą Xpath (lub w jakikolwiek inny sposób z Selenium)?

+1

Czy próbowałeś użyć '.wwitch_to(). frame (element)'? –

+0

@MarkRowlands Dziękuję, to działa! Ale z 'self.driver.switch_to.frame (frame_reference = self.driver.find_element_by_xpath")) ' – Uri

Odpowiedz

15

Nie możesz przejść przez , dopóki nie przełączysz się na nich. Twój xPath,

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

nie będzie działać, ponieważ tag <body> jest w iFrame, który nie jest w obecnym kontekście. najpierw musisz przejść do niego:

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

Dziękuję, to działa! Zrobiłem to z 'self.driver.switch_to.frame (frame_reference = self.driver.find_element_by_xpath")) ' – Uri

+0

jak zrobiłbym to z węzłem selenowym ? –

+0

, niezależnie od tego, czy działasz lokalnie, czy używasz węzła - wynik jest taki sam. – sircapsalot