2012-08-08 19 views
6

Chcę wybrać element elementu iframe, który znajduje się w wyskakującym oknie. Mogę wejść w okno wyskakujące, ale nie mogę zlokalizować elementu iframe. Poniżej znajduje się kod HTML okna podręcznego.Nie można znaleźć elementu iframe w Selenium Webdriver (java)

<html> 
<head></head> 
<body> 
<iframe width="100%" height="100%" border="0" src="/some/url.do?parameter=getData"> 
<html> 
. 
. 
<table id="ec_table" class="tableRegion" width="20%" cellspacing="1" cellpadding="2" 
border="0"> 
<tr class="even"> 
<td> 
<input type="radio" value="173" name="hier_data_id"> 
</td> 
</tr> 
. 
. 
</html> 
</iframe> 
</body> 
</html> 

Tutaj chcę kliknąć przycisk radiowy, który znajduje się wewnątrz iframe. Użyłem pod kodem, aby przejść z iframe, ale nie przełącza się na iframe.

driver.switchTo().frame(myD.findElement(By.tag("iframe"))); 

Jak iframe nie ma identyfikatora, jestem znalezieniem trudność zlokalizowania elementów wewnątrz iframe.

Czy ktoś wie, jak mogłem to zrobić ...?

Z góry dziękuję.

Odpowiedz

6

Możesz przełączyć się na ramie przez jego indeks. Spróbuj wykonać następujące czynności:

//go to popup 
//switch to the first frame , assuming there's only one frame with no id or name 
driver.switchTo().frame(0); 
driver.findElement(By.name("hier_data_id")).click(); 
+0

Wielkie dzięki, zadziałało. –

2

Jak iframe ma id odnoszą HERE i odpowiedź brzmi następująco

<iframe width="100%" height="100%" border="0" id="iframe" 
        src="/some/url.do?parameter=getData"> 

i kod jest

driver.switchTo().frame(myD.findElement(By.id("iframe"))); 
+0

Próbowałem z wyżej kod (identyfikator iframe), wciąż nie jest w stanie zidentyfikować elementów elementu iframe. Dziwne jest to, że test nie zawodzi, nawet przekroczenie limitu czasu. Daj mi znać, jeśli potrzebujesz jeszcze więcej szczegółów. –

0

//iframe[@src="/some/url.do?parameter=getData "]

Ale może to być moment & ładowanie problem. Więc możesz próbować pisać/czytać/wchodzić w interakcje z ramką iframe, zanim zawartość zostanie załadowana. Spróbuj sprawdzić element przed jego wybraniem. I poczekaj, jeśli go nie ma.

0

oto kod dla wybranie iFrame i wprowadź tekst „dane testowe”

$x = $I->grabAttributeFrom('//iframe', 'id'); 
$I->switchToIframe($x); 
$I->fillField('#tinymce', 'Test data'); 
$I->switchToWindow();` 

Jeśli masz dwa iFrame jeden po drugim można przełączać za pomocą tej funkcji

$I->switchToWindow(); 
Powiązane problemy