2013-08-28 64 views
9

Tôi đang thử nghiệm một trang có iFrame có nội dung được tạo động bằng JavaScript. Tôi phải đợi cho iFrame được tải hoàn toàn để đảm bảo rằng tất cả các phần tử đều có mặt. Tôi đã thử đoạn mã sau, nó không hoạt động.Selenium WebDriver: Cách đợi iFrames tải hoàn toàn?

WebDriver frame = wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("frmMain")); 

Tôi cũng đã cố gắng chờ một số phần tử trong iFrame hiển thị. Nó cũng không hoạt động.

Bất kỳ trợ giúp nào sẽ được đánh giá cao, cảm ơn!

Trả lời

-3

Bạn có thể chỉ cần thêm tuyên bố chờ - trong một số giây nhất định ...

+0

Cảm ơn câu trả lời của bạn. Sẽ rất hữu ích khi đợi giây servral trước khi xử lý iframe. – user2432405

+0

Ứng dụng tôi thử nghiệm có iframe trong mỗi trang. Thời gian cần thiết cho mỗi lần tải khung nội tuyến phụ thuộc vào dữ liệu cần được xử lý. nó không có vẻ là một cách thanh lịch để chờ đợi một số giây nhất định mỗi lần một số trang làm mới. – user2432405

+0

Tôi đồng ý nó không phải là thanh lịch, nhưng tôi đã tìm thấy tôi cần phải làm điều đó đôi khi. –

8

Chọn bất kỳ thành phần nào trên IFrame mất thời gian tải tối đa, ví dụ: bất kỳ nút hoặc hình ảnh nào và sự chờ đợi bằng cách sử dụng mã sau đây.

WebDriverWait wait = new WebDriverWait(driver, 30); 
wait.until(ExpectedConditions.visibilityOfElementLocated((By 
       .name("element")))); 

Hoặc đúng hơn bạn có thể đợi iFrame xuất hiện rồi chuyển sang và sau đó sử dụng câu lệnh ở trên!

+1

Tôi đã thực hiện việc này trước khi có Khung nội tuyến được tải JS và nó hoạt động. – craastad

+0

Tôi đã kiểm tra trang bằng mã sau: \t khoảng trống công khai SelectSomething (Trình điều khiển WebDriver, Chuỗi s) { driver.manage(). Timeouts(). ImplicitlyWait (10, TimeUnit.SECONDS); WebDriverWait wait = new WebDriverWait (trình điều khiển, 20); WebDriver frame = wait.until ( \t \t ExpectedConditions.frameToBeAvailableAndSwitchToIt ("frmMain")); wait = new WebDriverWait (khung, 30); System.out.println ("########################" + (new Date())); System.out.println (frame.getPageSource()); System.out.println ("########################" + (new Date())); ////// Để được tiếp tục ... – user2432405

+0

thử { \t \t wait.until (ExpectedConditions.presenceOfElementLocated (By.tagName ("img"))); \t} bắt (TimeoutException e) { \t \t System.out.println (frame.getPageSource()); \t} \t \t System.out.println ("#######################" + (new Date())); \t System.out.println (frame.getPageSource()); \t System.out.println ("#######################" + (new Date())); } ////// Để được tiếp tục ... – user2432405