2010-01-06 32 views
16

Tôi có tình huống khá chuẩn: Nhấp vào một nút, nó sẽ tải trang chuyển đổi với thanh tiến trình hoặc thứ gì đó và sau đó chuyển hướng đến trang tiếp theo trang, mất một lúc để tải.Cách để Selenium đợi trang chuyển tiếp chuyển hướng trước khi chạy xác nhận

Tôi muốn chạy xác nhận trên trang cuối cùng, không phải trang chuyển đổi. Làm cách nào để tôi yêu cầu Selenium IDE đợi đến khi trang cuối cùng tải trước khi thực hiện xác nhận?

Cảm ơn bạn.

Trả lời

13

Một cách tiếp cận đơn giản sẽ được chờ đợi đối với một số văn bản "đặc biệt" trên trang cuối cùng, nhìn thấy "waitForText" lệnh để biết thêm về nó

+0

ngọt ngào. Một điều tôi đã làm là thêm một lệnh setTimeout target = XXXX (trong ms) trước khi waitForText, và điều đó cắt giảm thời gian chờ đợi khi xác nhận không được đáp ứng. Cảm ơn rất nhiều, John. –

+1

Bạn cũng có thể sử dụng waitForLocation và cung cấp cho nó url. – user3735633

+0

làm thế nào để bạn làm waitForLocation? – poyger

1

Bạn có thể gọi wait_for_page hai lần liên tiếp. Lần đầu tiên chờ chuyển hướng, thứ hai cho trang cuối cùng.

5

Để thêm vào cách tiếp cận của John, bạn có thể sử dụng Selenium chờ cơ chế để xác minh rằng yếu tố trên trang cuối cùng của bạn có mặt như vậy:

Java:

WebDriverWait wait = new WebDriverWait(webDriver, 10); //seconds 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("foo))); 

Ruby:

wait = Selenium::WebDriver::Wait.new(:timeout => 10) # seconds 
wait.until { driver.find_element(:id => "foo") } 

Điều này sẽ thực hiện đúng theo bất kỳ chuyển hướng nào có liên quan.

Ví dụ từ https://code.google.com/p/selenium/wiki/RubyBindings

0

Bạn cũng có thể đợi cho đến khi tiêu đề trang là một giá trị kỳ vọng:

$driver->wait()->until(WebDriverExpectedCondition::titleIs('New page title from redirect')); 
Các vấn đề liên quan