2012-08-08 38 views
6

Tôi muốn chọn phần tử iframe được đặt trong cửa sổ bật lên. Tôi có thể vào trong cửa sổ bật lên nhưng không thể định vị iframe. Dưới đây là mã html của cửa sổ bật lên.Không thể xác định iframe trong 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> 

Ở đây tôi muốn nhấp vào nút Radio nằm bên trong khung nội tuyến. Tôi đã sử dụng mã bên dưới để chuyển đổi trong iframe nhưng nó không chuyển sang iframe.

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

Vì khung nội tuyến không có id, tôi đang gặp khó khăn khi tìm các yếu tố bên trong iframe.

Có ai biết cách tôi có thể làm điều đó không?

Xin cảm ơn trước.

Trả lời

6

Bạn có thể chuyển sang một khung bởi chỉ số của nó. Hãy thử như sau:

//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

Rất cám ơn, nó đã hoạt động. –

2

Như iframe có id tham khảo HERE và câu trả lời của bạn là như sau

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

và mã của bạn là

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

Tôi đã thử với trên mã (id iframe), vẫn không thể xác định các phần tử khung nội tuyến. Điều kỳ lạ là, trường hợp thử nghiệm không phải là không vượt quá giới hạn thời gian chờ vượt quá. Vui lòng cho tôi biết nếu bạn cần thêm chi tiết. –

0

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

Nhưng điều này có thể là một vấn đề thời gian tải &. Vì vậy, bạn có thể đang cố gắng viết/đọc/tương tác với khung nội tuyến trước khi nội dung được tải. Thử kiểm tra phần tử trước khi chọn nó. Và chờ đợi nếu nó không có mặt.

0

đây là mã để lựa chọn iFrame và nhập nội dung "dữ liệu Test"

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

Nếu bạn có hai iFrame cái khác Bạn có thể chuyển qua chức năng này

$I->switchToWindow(); 
Các vấn đề liên quan