2010-05-12 34 views
6

Tôi có nút trên trang đang được sử dụng làm liên kết đến một trang khác. Vì vậy, khi người dùng nhấp vào nút họ được chuyển hướng đến đúng trang.Selenium: Cách bấm vào phần tử nút HTML?

Tôi đang sử dụng phần mở rộng Selenium cho PHPUnit và tôi muốn kiểm tra xem nút có đang chuyển hướng người dùng một cách chính xác hay không. Dưới đây là HTML mà tôi đang cố gắng để kiểm tra:

<button onclick="window.location='/sponsor';" value="Continue" type="button" id="sponsorContinue" name="sponsorContinue">Continue</button> 

Tôi đã thử rất nhiều cách tiếp cận khác nhau để nhấn nút, nhưng tôi dường như không thể nhận được bất kỳ trong số họ làm việc:

$this->click("//button[@id='sponsorContinue']"); 

Lệnh này thực hiện và không ném bất kỳ lỗi nào, nhưng trang không được chuyển hướng. Nó hoạt động tốt khi tôi bấm nút. Tôi nên làm gì?

+0

Đoạn mã này hoạt động tốt cho tôi. Bạn đang sử dụng trình duyệt/hệ điều hành nào? –

Trả lời

2

Đây là vấn đề ... HTML sai, và buộc người dùng phải sử dụng javascript để tiếp tục trang tiếp theo. Sử dụng HTML này để thay thế. Nó sạch hơn và không dựa vào javascript.

<form method="get" action="/sponsor"> 
    <button type="submit" id="sponsorContinue">Continue</button> 
</form> 

Ngoài ra, bây giờ điều này sẽ làm việc:

$this->click('sponsorContinue'); 

Tuy nhiên, nếu bạn đang cố gắng để có được window.location để làm việc, see this question.

+0

+1 cho giải pháp không có Javascript. Nhưng tại sao Selen không kích hoạt sự kiện onclick? –

+1

Tôi đồng ý với việc thay đổi HTML nút trong trường hợp này. Tuy nhiên, nếu bạn cần kích hoạt các sự kiện trong tương lai, Selen sẽ cho phép bạn thực hiện điều này với fireEvent! – Zugwalt

+0

@Zugwalt Tôi không thể chạy fireEvent để làm việc trong Safari 4 – Andrew

Các vấn đề liên quan