2010-03-30 36 views
10

Tôi đã thử một số thứ để thử và nhận Selenium để nhận sự kiện 'trao đổi' từ trình đơn thả xuống, không cái nào trong số đó hoạt động.Selenium onChange không hoạt động

HTML vi phạm là:

<select onchange="doOpperation(this.options[this.selectedIndex]); this.selectedIndex = 0;" name="opps_ondemand" id="opps_ondemand"> 
    <option value="none" id="ondemand">Mark as...</option> 
    <option cmd="blah1" value="add">Something</option> 
    <option cmd="blah2" value="remove">None</option> 
</select> 

Tôi đã đọc rằng Selenium IDE không ghi lại một số sự kiện *, và vì vậy nó sẽ là khôn ngoan để sử dụng fireEvent():

$this->click("opps_ondemand"); 
$this->select("opps_ondemand", "label=Mark as..."); 
$this->click("//option[@value='add']"); 
sleep(3); 
$this->fireEvent("//select[@id='opps_ondemand']", "change"); 

Tuy nhiên, điều này không hoạt động (có hoặc không có fireEvent). Tôi cũng đã cố gắng sử dụng

$this->fireEvent("locator", "click"); 

thay vì

$this->click("locator"); 

nhưng điều này đã không làm gì.

Selenium không phàn nàn về những người định vị này không tồn tại nên tôi cho rằng nó có thể thấy các yếu tố lựa chọn/tùy chọn tốt. Vấn đề có vẻ là sự kiện onChange.

Có ai biết cách giải quyết vấn đề này không?

Cảm ơn.

+0

Trình duyệt bạn đang sử dụng? – John

+0

Tôi đang thử nghiệm trên Firefox 3.5.8. – tohop

Trả lời

2

đã thử điều này?

$this->fireEvent("opps_ondemand", "onchange"); 

fireEvent (element_id, event_to_trigger);

5

tôi gặp phải chính xác vấn đề này, nhưng trong IE chỉ (Firefox và Google Chrome hoạt động tốt đối với tôi)

tôi tìm thấy giải pháp cho được bằng tay buộc cập nhật sử dụng JavaScript thông qua Selenium của runScript. Một số cách để làm điều đó có thể được tìm thấy ở đây:

How do I programmatically force an onchange event on an input?

Ví dụ, nếu tôi có jQuery trong trang web của tôi, tôi sẽ làm điều này:

$this->select('IDOfSelectElement', '*some label*'); 
$this->runScript("$('#IDOfSelectElement').trigger('change')"); 
+0

Cảm ơn! Điều này làm việc cho tôi. – sonicwizard

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